JQuery Validateプラグインを使用してhtml select要素を検証しようとしています。 「必須」ルールをtrueに設定しましたが、デフォルトでゼロインデックスが選択されているため、常に検証に合格します。必要なルールで使用される空の値を定義する方法はありますか?
UPD。例。次のHTMLコントロールがあるとします。
<select>
<option value="default">Choose...</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
Validationプラグインが「デフォルト」値を空として使用するようにします。
独自のルールを書くことができます!
// add the rule here
$.validator.addMethod("valueNotEquals", function(value, element, arg){
return arg !== value;
}, "Value must not equal arg.");
// configure your validation
$("form").validate({
rules: {
SelectName: { valueNotEquals: "default" }
},
messages: {
SelectName: { valueNotEquals: "Please select an item!" }
}
});
より簡単なソリューションの概要は次のとおりです。 検証ボックスの検証
値を空にして、必要な属性を追加します
<select id="select" class="required">
<option value="">Choose an option</option>
<option value="option1">Option1</option>
<option value="option2">Option2</option>
<option value="option3">Option3</option>
</select>
最小ルールを使用
最初のオプション値を0に設定します
'selectName':{min:1}
この選択のクラスとしてvalidate[required]
を配置し、value = ""でオプションを配置するだけです。
例えば:
<select class="validate[required]">
<option value="">Choose...</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
質問が行われたとき(2010年)にプラグインがどのようになったかはわかりませんが、今日は同じ問題に直面し、次のように解決しました。
選択タグに名前属性を付けます。この場合の例
<select name="myselect">
タグオプションで属性value = "default"を使用する代わりに、デフォルトオプションを無効にするか、Andrew Coatsの提案に従ってvalue = ""を設定します。
<option disabled="disabled">Choose...</option>
または
<option value="">Choose...</option>
プラグイン検証ルールを設定する
$( "#YOUR_FORM_ID" ).validate({ rules: { myselect: { required: true } } });
または
<select name="myselect" class="required">
Obs:Andrew Coatsのソリューションは、フォームで選択したものが1つだけの場合にのみ機能します。彼のソリューションが複数の選択で動作するようにするには、選択に名前属性を追加します。
それが役に立てば幸い! :)
これはシンプルでわかりやすい例です:
<select class="design" id="sel" name="subject">
<option value="0">- Please Select -</option>
<option value="1"> Example1 </option>
<option value="2"> Example2 </option>
<option value="3"> Example3 </option>
<option value="4"> Example4 </option>
</select>
<label class="error" id="select_error" style="color:#FC2727"><b> Warning : You have to Select One Item.</b></label><td>
<input type="submit" name="sub" value="Gönder" class="">
JQuery:
jQuery(function() {
jQuery('.error').hide(); // Hide Warning Label.
jQuery("input[name=sub]").on("click", function() {
var returnvalue;
if(jQuery("select[name=subject]").val() == 0) {
jQuery("label#select_error").show(); // show Warning
jQuery("select#sel").focus(); // Focus the select box
returnvalue=false;
}
return returnvalue;
});
}); // you can change jQuery with $
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<form id="myform">
<select class="form-control" name="user_type">
<option value="">Select</option>
<option value="2">1</option>
<option value="3">2</option>
</select>
</form>
<script>
$('#myform').validate({ // initialize the plugin
rules: {
user_type:{ required: true},
}
});
</script>
選択値は空白になります
@JMPで言及された解決策は、少し変更して私のケースで機能しました。value
でaddmethod
の代わりにelement.value
を使用します。
$.validator.addMethod("valueNotEquals", function(value, element, arg){
// I use element.value instead value here, value parameter was always null
return arg != element.value;
}, "Value must not equal arg.");
// configure your validation
$("form").validate({
rules: {
SelectName: { valueNotEquals: "0" }
},
messages: {
SelectName: { valueNotEquals: "Please select an item!" }
}
});
ここに特別なケースがありますが、原因を突き止めなかった可能性があります。しかし、@ JMPのソリューションは通常のケースで機能するはずです。
選択した「資格」を検証する方法3選択
$(document).ready(function(){
$('.validateForm').validate({
rules: {
fullname: 'required',
ragionesociale: 'required',
partitaiva: 'required',
recapitotelefonico: 'required',
qualifica: 'required',
email: {
required: true,
email: true
},
},
submitHandler: function(form) {
var fullname = $('#fullname').val(),
ragionesociale = $('#ragionesociale').val(),
partitaiva = $('#partitaiva').val(),
email = $('#email').val(),
recapitotelefonico = $('#recapitotelefonico').val(),
qualifica = $('#qualifica').val(),
dataString = 'fullname=' + fullname + '&ragionesociale=' + ragionesociale + '&partitaiva=' + partitaiva + '&email=' + email + '&recapitotelefonico=' + recapitotelefonico + '&qualifica=' + qualifica;
$.ajax({
type: "POST",
url: "util/sender.php",
data: dataString,
success: function() {
window.location.replace("./thank-you-page.php");
}
});
return false;
}
});
});
簡単です。Selectフィールドの値を取得する必要があり、「デフォルト」にすることはできません。
if($('select').val()=='default'){
alert('Please, choose an option');
return false;
}