0

または、そうすべきです。重要なのは、現在のフィールドを空のままにしておくのは無効であるとだけ表示される場合は、他のフィールドを終了して、そのフィールドを忘れ てしまう可能性があるということです。

ポイントがクリアされます。

今、私は取引全体をキャンセルしたいと言います私はこのフォームにまったく記入しません!

幸いなことに、「キャンセル」画像ボタンがあります

を非表示にしますが form無効にもなります

フォームに入力しようとしているふりをして、invalidEmpty-Errorクリアしたらすぐにキャンセルを押す以外の回避策はありますか?

MaskedEditExtender

<cc1:MaskedEditExtender enabled="true" MaskType="Date" ID="insertDate_MaskedEditExtender" runat="server"
    TargetControlID="TBXinsertDate"  InputDirection="LeftToRight"  CultureName="en-GB" 
    UserDateFormat="None" Mask="99/99/9999" MessageValidatorTip="true"  OnFocusCssClass="maskedFocus" ErrorTooltipEnabled="true" ErrorTooltipCssClass="toolTipForInvalid"
</cc1:MaskedEditExtender>

MaskedEditValidator

<cc1:MaskedEditValidator Enabled="false" IsValidEmpty="false" ID="insertDate_MskValidator"  ControlExtender="insertDate_MaskedEditExtender" ControlToValidate="TBXinsertDate" runat="server"
    InvalidValueBlurredMessage="invalid date" EmptyValueBlurredText="requierd fileld"  ErrorMessage="Error" 
    MaximumValue="01/01/2015" MinimumValue="01/01/2008" MinimumValueBlurredText="please enter year above 2008" MaximumValueBlurredMessage="max year value is 2015" 
    CssClass="dateInValid">
</cc1:MaskedEditValidator>

コードビハインドからのボタンイベントをEnabled = false介して有効になっているため 、バリデーターのデフォルトの状態。onClick

  insertDate_MskValidator.Enabled = true;

ステージ1-

バリデーター対応=false

フォームは非表示です

ステージ2-

バリデーター対応=true+フォームが表示されます

ステージ3-

キャンセルまたは送信

フォームが有効な場合は送信します。テキストボックスのいずれかにステップインした場合、キャンセルはオプションではありません

あなたが考えることができる方法はありますか?

4

2 に答える 2

1
<asp:TextBox ID="tbEffectiveTo" runat="server" Text='<%# Bind("EffectiveTo", "{0:MM/dd/yyyy}")%>' Width="8em" ToolTip="MM/DD/YYYY"></asp:TextBox>
<ajaxToolkit:MaskedEditExtender ID="meeEffectiveTo" runat="server" TargetControlID="tbEffectiveTo" Mask="99C99C9999" MessageValidatorTip="true" OnFocusCssClass="MaskedEditFocus"  OnInvalidCssClass="MaskedEditError" MaskType="None" ClearMaskOnLostFocus="false" Filtered="/" PromptCharacter=" " />
<ajaxToolkit:MaskedEditValidator ID="mevEffectiveTo" runat="server" ControlExtender="meeEffectiveTo" ControlToValidate="tbEffectiveTo" Display="Dynamic" IsValidEmpty="true" ValidationExpression="^\s{10}|(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(20\d\d)$" InvalidValueMessage="Invalid Date"></ajaxToolkit:MaskedEditValidator>
<ajaxToolkit:CalendarExtender ID="ceEffectiveTo" runat="server" Enabled="True" TargetControlID="tbEffectiveTo" CssClass="EffectiveDateCalendar" Format="MM/dd/yyyy"></ajaxToolkit:CalendarExtender>
于 2014-04-29T17:05:54.313 に答える
0

私はそれを回避するための驚くべき方法を見つけたので(私は思う!)、検証属性を使用できるようになりました- isValidEmpty=false (現在のフィールドは必須フィールドです)

ただし、デフォルトでは使用できない場合でも、フィールドが空の場合でもフォームをキャンセルできるようになりました

空のフィールドを残すときに、周囲のコントロールが無効になる問題を修正しました。

私がする必要があるのは、のイベントが onblur検証を起動しているときだけです

次のように、バリデーターを無効にするために遅延を実行target textbox onblur()する関数を実行する関数をバインドしています。setTimeOut

   function setTDisableValidation() {
        setTimeout('disableValidation()', 3500);
    }

    function disableValidation() {
        var myVal = document.getElementById('insertDate_MskValidator');
        myVal.disabled = true;
        myVal.ValidEmpty = true;

    }

            <asp:TextBox ID="TBXinsertDate" runat="server" ToolTip="insert date" Width="76px" onblur="setTDisableValidation();">
                    </asp:TextBox>

私はasp.netでもjavascriptの専門家ではないので(まだ...)、このコードはリファクタリング/最適化できるので、よりエレガントになり、パラメーターとして指定されたコントロールを受け入れることができると思います

于 2012-10-11T01:10:39.957 に答える