2017-03-08 11 views
0

I、次のコードを有する:jQueryの - 変更が行われるトリガー変化手動

<div> 
    <label>Location</label> 
    <asp:TextBox ID="Location" runat="server" CssClass="form-control" ClientIDMode="Static" placeholder="Enter location"></asp:TextBox> 
</div> 
<div> 
    <label >Address</label> 
    <asp:TextBox ID="Address" runat="server" CssClass="form-control" ClientIDMode="Static" placeholder="Enter the address"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ErrorMessage="Address is Required" Display="Dynamic" ControlToValidate="Address" CssClass="field-validation-error" EnableClientScript="True"></asp:RequiredFieldValidator> 
</div> 
<asp:Button ID="Submit" runat="server" Text="Save" OnClick="btnSubmit_Click" CssClass="btn btn-primary" /> 

<script> 
    $("#Location").on('change', function (e) { 
     var location = $("#Location").val(); 
     $("#Address").val(location).trigger("change"); 
    }); 

    $("#Address").on('change', function (e) { 
     // do some other stuff 
    }); 
</script> 

アドレスフィールドは位置フィールドの値とjQueryを介して移入されます。

フィールドを入力せずにsubmitをクリックすると、クライアント側の検証が始まり、Addressコントロールの下にエラーメッセージが表示されます。

[場所]フィールドに値を入力すると、jQueryが起動し、[アドレス]フィールドに値が設定されますが、以前のエラーメッセージはクリアされません。これを解決するには、.trigger("change");メソッドを使用します。

は、しかし、それはまたそれを呼び出す私が .trigger("change")を使用するたびに、次の機能を起動:

$("#Address").on('change', function (e) { 
    // do some other stuff 
}); 

私は唯一の入力は、jQueryのではなく手動で変更された唯一の変更イベントハンドラのアドレスを発射します。

どうすればこの問題を解決できますか?

+0

。エラー時に入力に属性を追加しますか? – Toxide82

答えて

0

入力が手動で変更される変更イベントハンドラをまったくバインドしません。

値を手動で変更する場合はイベントハンドラをバインドし、イベントリスナを削除する場合は.off()を使用してください。

function AddressEventHandler(e) { 
    // do some other stuff 
} 

$("#Location").on('change', function(e) { 
    var location = $("#Location").val(); 

    $("#Address").val(location) 
    .on('change.myNamespace', AddressEventHandler) 
    .trigger("change.myNamespace") 
    .off('change.myNamespace'); 
}); 
0

私は以下のようにして、修正するために管理している:あなたのエラーメッセージが表示されますん

$("#Address").on('change', function (e) { 

    if (e.originalEvent !== undefined) 
    { 
     // do some other stuff 
    } 

}); 
関連する問題