由於標題說我試圖添加動態驗證規則添加方法,但他們根本不工作。我可能會打電話給我的輸入,並選擇錯誤,我可能不知道我已經從堆棧上類似主題的代碼的添加位。動態改變驗證規則與選擇輸入
下面是我使用
echo '<form id="first_form" action="#" method="POST" style="border: 0; margin: 0;">';
echo '<input type="hidden" value="'.$formid.'" name="formid">';
echo '<h1>Season, Patch version & amount of champions</h1>';
echo '<select id="season" name="season" onchange="checkseason();">';
echo '<option value="newseasons" name="newseasons" selected>Season 3+</option>';
echo '<option value="oldseasons" name="oldseasons">Season 1, 2</option>';
echo '</select>';
echo '<input id="patch" type="text" name="patch" placeholder="e.g. 4.20" required autofocus><br/>';
echo '<input placeholder="Number of Champions" value="1" type="number" name="champ_number" min="1" max="20" required><br/>';
echo '<input type="submit" value="next">';
echo '</form>';
形式這裏是我的jQuery/javascript代碼
function checkseason(){
d = document.getElementById("season").value;
$('#first_form').validate({
rules: {
patch: {
required: true,
remote: {
url: "../checkpatch.php",
type: "post"
}
}
},
messages: {
patch: {
required: "Please enter patch version.",
remote: "Patch with this number already exists."
}
},
});
$('select[name="season"]').on('change', function() {
if ($(this).val() == "newseasons") {
$('option[name="newseasons"]').rules('add', {
minlength: 4,
messages: {
minlength: "Please enter 3 numbers"
}
});
} else if ($(this).val() == "oldseasons") {
$('option[name="oldseasons"]').rules('add', {
minlength: 8,
messages: {
minlength: "Please enter 8 numbers"
}
});
}
});
}
更新:代碼現在工作得很好的消息和改變MINLENGTH但形式沒有按不包括啓動限制,我必須在這兩個下拉選項之間切換才能激活它們。
function checkseason(){
d = document.getElementById("season").value;
$('#first_form').validate({
rules: {
patch: {
required: true,
remote: {
url: "../checkpatch.php",
type: "post"
}
}
},
messages: {
patch: {
required: "Please enter patch version.",
remote: "Patch with this number already exists."
}
},
});
$('select[name="season"]').on('change', function() {
if ($(this).val() == "newseasons") {
$('input[name="patch"]').rules('add', {
minlength: 4,
maxlength: 4,
messages: {
minlength: "Please enter 3 numbers"
}
});
} else if ($(this).val() == "oldseasons") {
$('input[name="patch"]').rules('add', {
minlength: 8,
maxlength: 9,
messages: {
minlength: "Please enter 8 numbers"
}
});
}
});
}
$(document).ready(function(){
checkseason();
});
我已經試過類似的東西$( '選擇[NAME = 「季節」]')上( '變',函數(){ \t \t。 \t \t \t \t如果($(本).VAL()== 「newseasons」){ \t \t \t \t \t \t \t $( '#first_form')。規則( '添加',{ \t \t \t \t \t \t \t \t MINLENGTH:4, \t \t \t \t \t \t \t \t消息:{ \t \t \t \t \t \t \t \t \t MINLENGTH: 「請輸入3個數字」 \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t}); \t \t \t \t \t \t}否則,如果($(本).VAL()== 「oldseasons」){ \t \t \t \t \t \t \t $( '#first_form')。規則( '添加',{ \t \t \t \t \t \t \t \t使用MINLENGTH:8, \t \t \t \t \t \t \t \t消息:{ \t \t \t \t \t \t \t \t \t MINLENGTH到: 「請輸入8位數字」 \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t}); \t \t \t \t \t \t} \t \t \t \t \t}); 並不能真正把它工作 – Higeath
@Higeath,我試着在你的另一個問題中解釋,'.validate()'方法是用於初始化插件,並且除DOM準備好之外不會進入任何函數或處理程序。你正在使用內聯的'onchange()'處理函數來調用你的函數。當你已經有一個jQuery'onchange'處理程序時,這沒有任何意義。這正是爲什麼沒有發生。 – Sparky
@Higeath,關於你上次評論中的代碼。現在你爲什麼要把'.rules()'附加到表單中?根據我上面的回答,'.rules()'方法只能附加到'