Web アプリにいくつかの検証を構築しようとしていますが、小さな問題が発生しています。ASPドロップダウンリストとテキストボックスがあり、誰かがドロップダウンリストから「その他」を選択した場合にテキストボックスを必須にしたいと考えています。[その他] を選択すると検証が機能しますが、別のオプションを選択して [保存] ボタンをクリックすると、ドロップダウンで選択した値が [その他] でなくても、テキスト ボックスに値を入力するよう求められます。
これが私のjquery関数です:
$(function() {
$("#btnMainSave").click(function() {
val = $('#ddlRefTo').val();
alert(val);
$("#form1").validate({
rules: {
txbRefToOther: val == "Other" ? "required" : "notrequired",
txbRefConcern: "required"
},
messages: {
txbRefConcern: "*This field is mandatory",
txbRefToOther: "*This field is mandatory"
},
ignore: ""
});
});
});
アラートは、値の変更が検出されていることを示していますが、何らかの理由で、検証部分は、val=「その他」とは異なるものであっても、テキストボックスに値を入力することを主張しています。
どんな助けでも大歓迎です。ありがとう
アップデート
カスタム検証をいじってみましたが、まだいくつかの問題があります。これが私のカスタム検証方法です:
$.validator.addMethod("Test", function(value, element) {
var val = $('#ddlRefTo').val();
if (value.length==0 && val=="Other") {
//INVALID
return false;
}
// VALID
else return true;
},
"*This field is required.");
そして、私はそれを次のように言及しています:
$("#form1").validate({
rules: {
txbRefToOther: {
required: true,
Test: true
}
}
});
ただし、送信するとすぐに、ドロップダウンで何が選択されていても検証エラーがトリガーされ、テキストボックスに何かを入力したときにのみ停止します。
ただし、次のように、テキストボックスではなくドロップダウンで検証を設定した場合:
$.validator.addMethod("Test", function(value, element) {
if (value=="Other" && $('#txbRefToOther').val()=="") {
//INVALID
return false;
}
// VALID
else return true;
},
"*This field is required.");
$("#form1").validate({
rules: {
ddlRefTo:{
required: true,
Test: true
}
}
});
思い通りに動作しますが、代わりにドロップダウンリストにエラーメッセージが表示されます! 最初のバージョンが機能しないのはなぜですか? それが役立つ場合、私のHTMLは次のとおりです。
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script type="text/javascript" src="http://jquery.bassistance.de/validate/jquery.validate.js"></script>
<script type="text/javascript" src="http://jquery.bassistance.de/validate/additional-methods.js"></script>
......
......
<table width="530">
<tr>
<td class="Label" width="80">Referring to</td>
<td width="120"><asp:DropDownList id="ddlRefTo" runat="server" CssClass="textbox" Font-Size="9pt" Width="110">
<asp:ListItem Text="Test1" Value="Test1"></asp:ListItem>
<asp:ListItem Text="Test2" Value="Test2"></asp:ListItem>
<asp:ListItem Text="Test3" Value="Test3"></asp:ListItem>
<asp:ListItem Text="Other" Value="Other"></asp:ListItem>
</asp:DropDownList>
</td>
<td class="Label" align="right" width="170">If 'Other', Please specify</td>
<td><asp:TextBox ID="txbRefToOther" runat="server" CssClass="textbox" Width="150"></asp:TextBox></td>
</tr>
</table>
<asp:Button ID="submit" runat="server" Text="Click" />