2015-12-01 213 views
1

我一直在尋找,但還沒有找到我的具體需求的解決方案。我總共有3個字段(first_name,last_name和business_name)。我希望用戶輸入名字和姓氏,或者只輸入商家名稱。jQuery驗證需要兩個字段或一個其他字段

我有幾種方法,這是我最近的嘗試。

<input type="text" id="first_name" name="first_name"> 
<input type="text" id="first_last" name="first_last"> 
<input type="text" id="bus_name" name="bus_name"> 

rules : { 
    first_name1 : { 
     required: function(element){ 
      return $("#bus_name").val().length = 0; 
     } 
    }, 
    last_name1 : { 
     required : function(element){ 
      return $("#bus_name").val().length = 0; 
     } 
    }, 
    bus_name1: { 
     required : function(element){ 
      return ($("#first_name").is(':empty') && $("#last_name").is(':empty') ? true : false); 
    } 
} 

我也試過創建一個自定義方法。毋庸置疑,它不起作用。

$.validator.addMethod("busnameRequired", function(value, element) { 
var firstname1 = $("#first_name").val().length, 
     lastname1 = $("#last_name").val().length; 

if(firstname + lastname == 0) { 
    return true; 
}else{ 
    return false; 
} 
}, "Enter Business Name"); 

在此先感謝!

+0

請不要編輯您的問題中的編碼錯誤,從而可能會斷開任何答案。 – Sparky

回答

1

條件規則:

您有各種小問題,在第一次嘗試......

  1. 您宣佈first_name1的規則,但這個領域被命名爲first_name。該插件需要正確的name屬性。

  2. 您聲明瞭一條關於last_name1的規則,但該字段名爲first_last。該插件需要正確的name屬性。

  3. 您宣佈了一條規則bus_name1,但該字段名爲bus_name。該插件需要正確的name屬性。

  4. 您正在檢查一些規則的長度,但在另一個檢查:empty。改爲使用.is(':blank')

DEMO:http://jsfiddle.net/n8gvvb92/


自定義方法:

在您的自定義規則,你的邏輯是倒退。當名稱字段爲空時,您正在返回true。在這種情況下,您將要返回false,以便觸發驗證錯誤消息。

您也可以在這裏使用.is(':blank')

像這樣的東西更接近你想要的東西,但仍然需要一些工作。

$.validator.addMethod("busnameRequired", function (value, element) { 
    return ($("#first_name").is(':blank') && $("#last_name").is(':blank')) ? false : true; 
}, "Enter Business Name"); 
+0

感謝您的迴應!你說得對,我從表單字段中刪除了「1」。我查看了您提供的兩個DEMO,但它不按我想要的方式工作。我很抱歉沒有更清楚解釋。 – user752746

+0

@ user752746,這兩個演示程序正如您所描述的一樣。這不僅僅是取消'1'的問題。 'first_last'仍然與'last_name'不一樣。 – Sparky

+0

我希望用戶輸入(名字和姓氏)或只輸入(商業名稱)。第二個允許企業名稱空白,姓和名都填充。但它確實適用於填寫商戶名稱,名字和姓氏爲空白。 – user752746

相關問題