2013-02-15 158 views
14

我在jQuery中有以下代碼。
select元素的選項值爲「0」時,我需要顯示驗證消息「Year Required」。jQuery選擇框驗證

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#register").validate({ 
     debug: true, 
     rules: { 
      year: { 
       required: function() { 
        if ($("#year option[value='0']")) { 
         return true; 
        } else { 
         return false; 
        } 
       } 
      } 
     }, 
     messages: { 
      year: "Year Required", 
     }, 
    }); 
}) 
</script> 

選擇框

<select name="year" id="year"> 
    <option value="0">Year</option> 
    <option value="1">1919</option> 
    <option value="2">1920</option> 
    <option value="3">1921</option> 
    <option value="4">1922</option> 
</select> 
+0

如果($( '#年選項:選擇'。)VAL()== 「0」) – 2013-02-15 14:38:56

+0

是那些額外的逗號錯別字或錯誤? – 2013-02-15 14:40:12

+0

@wolvern謝謝......但它不工作。我已經檢查了它與IE瀏覽器,但沒有顯示任何編碼錯誤..任何想法? – Tom 2013-02-15 14:45:54

回答

40

因爲你的第一個option內不能設置value="",你需要使用the built-in addMethod() method創建自己的規則。

jQuery的

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      year: { 
       selectcheck: true 
      } 
     } 
    }); 

    jQuery.validator.addMethod('selectcheck', function (value) { 
     return (value != '0'); 
    }, "year required"); 

}); 

HTML

<select name="year"> 
    <option value="0">Year</option> 
    <option value="1">1955</option> 
    <option value="2">1956</option> 
</select> 

工作演示:http://jsfiddle.net/tPRNd/


原來的答案:(只有當你可以在第一option設置value=""

正確驗證與jQuery驗證插件中select元素只要求第一個option包含value=""。因此請從value="0"中刪除0,它已修復。

jQuery的

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      year: { 
       required: true, 
      } 
     } 
    }); 

}); 

HTML

<select name="year"> 
    <option value="">Year</option> 
    <option value="1">1955</option> 
    <option value="2">1956</option> 
</select> 

演示:http://jsfiddle.net/XGtEr/

+0

感謝斯帕奇..它現在工作。是的,我知道第二個選項,但我不能從選項值中扣除零。你能解釋一下這個jsfiddle的用途嗎? – Tom 2013-02-16 04:51:26

+0

@Tom,我在答案中留下了兩個選項,讓其他讀者瞭解兩者之間的區別。 – Sparky 2013-02-16 04:55:33

+0

某些舊瀏覽器不支持Jquery嗎?如果是這樣,我們需要添加服務器端驗證以及客戶端腳本? – Tom 2013-02-16 05:16:25

0

簡化了整個事情了一下,解決一些問題用逗號將炸燬一些瀏覽器:

$(document).ready(function() { 
     $("#register").validate({ 
      debug: true, 
      rules: { 
       year: { 
        required: function() { 
         return ($("#year option:selected").val() == "0"); 
        } 
       } 
      }, 
      messages: { 
       year: "Year Required" 
      } 
     }); 
    }); 

跳轉到一個假設,應你的選擇沒有這個屬性validate="required:true"

+0

@馬克感謝..編碼似乎沒有錯,但它不會產生正確的輸出(無輸出)。 – Tom 2013-02-15 14:55:09

+0

我想我們需要知道你使用的確切的驗證插件。 – 2013-02-15 15:01:25

+0

它被標記爲這樣,但我確定了標題使其更加清晰。 – Sparky 2013-02-15 16:29:18

9

爲了把需要的規則選擇列表上,你只需要一種選擇一個空值

<option value="">Year</option> 

則需要爲應用需要對自己足夠

<script> 
    $(function() { 
     $("form").validate(); 
    }); 
</script> 

與表格

<form> 
<select name="year" id="year" class="required"> 
    <option value="">Year</option> 
    <option value="1">1919</option> 
    <option value="2">1920</option> 
    <option value="3">1921</option> 
    <option value="4">1922</option> 
</select> 
<input type="submit" /> 
</form> 

fiddle is here

+0

+1是理解此插件的唯一回答者。 – Sparky 2013-02-15 16:24:43

+0

謝謝..使用空值將正常工作。但我不能在我的程序中使用空值,因爲它是從數組中顯示的。添加空值只需要使用required:true only :) – Tom 2013-02-15 19:02:26

+0

@Tom,你應該在你的OP中提到過這個,你也應該有禮貌地處理已經發布在你的其他問題上的答案:http:// stackoverflow.com/questions/14889736/jquery-select-box-validations-with-validate-plugin – Sparky 2013-02-15 19:35:17

1

http://docs.jquery.com/Plugins/Validation/Methods/required

編輯如下檢查從選擇列表0或空值選擇爲「選擇」的代碼

case 'select': 
var options = $("option:selected", element); 
return (options[0].value != 0 && options.length > 0 && options[0].value != '') && (element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0); 
+0

爲了更好的可讀性,將代碼放入「代碼塊」中。 – SilentAssassin 2013-02-28 10:17:40

1

jQuery的選擇框Validation.You可以通過警報警報消息或股利Put消息按您的要求。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="message"></div> 
 
<form method="post"> 
 
<select name="year" id="year"> 
 
    <option value="0">Year</option> 
 
    <option value="1">1919</option> 
 
    <option value="2">1920</option> 
 
    <option value="3">1921</option> 
 
    <option value="4">1922</option> 
 
</select> 
 
<button id="clickme">Click</button> 
 
</form> 
 
<script> 
 
$("#clickme").click(function(){ 
 

 
if($("#year option:selected").val()=='0'){ 
 

 
alert("Please select one option at least"); 
 

 
    $("#message").html("Select At least one option"); 
 

 
} 
 

 

 
}); 
 

 
</script>

+2

一個代碼示例很好,但是我建議在一些描述中添加一些關於需要做什麼或答案可能被標記爲質量很低的答案。 – Syfer 2017-07-13 04:24:48

+0

該代碼用於在問題中定義的選擇框的驗證。有兩種消息,一種是警報,另一種是打印在分區中。如果您需要更多說明,請讓我知道。謝謝 – 2017-07-31 07:12:41

+0

我的意思是把你的文章的描述。因此,將來讀者閱讀該描述的人也是如此。 – Syfer 2017-07-31 07:16:53