2013-05-30 101 views
0

我有幾個表格,帶有表單元素 - 所有這些元素都作爲單個表單提交併解析。我想添加一些驗證,使用jQuery的.submit()參數。表單驗證 - 替換空白字段

我已經發現了一些代碼網上,但這些產生錯誤消息,我想知道是否有人的任何示例代碼,可以執行以下認識:

On .submit() 
if textBox1 = "" 
    then replace empty textBox1 with "1" 
else if textBox2 = "" 
    then replace empty textBox2 with "-1" 
and continue to submit the form 
+1

添加1或-1到什麼? – frrlod

+0

對不起,措辭不妙 - 用空白文本框替換爲「1」或「-1」作爲內容。 –

回答

1

你的僞代碼正是翻譯:

$("form").submit(function() { 
    if ($('input[name="textBox1"]').val() == "") { 
     $('input[name="textBox1"]').val("1"); 
    } elseif ($('input[name="textBox2"]') == "") { 
     $('input[name="textBox2"]').val("-1"); 
    } 
}); 

編輯:

// HTML form 
<input type="text" name="textBox1" id="foo" /> 
<input type="text" name="textBox1" id="bar" /> 

// Javascript 
$("form").submit(function() { 
    if ($('input[id="foo"]').val() == "") { 
     $('input[id="foo"]').val("1"); 
    } elseif ($('input[id="bar"]') == "") { 
     $('input[id="bar"]').val("-1"); 
    } 
}); 
+0

這假定你的表單輸入是相應命名的,例如''。 – zeantsoi

+0

我試圖實現這一點 - 它是否改變了很多,如果有一個文本框稱爲textBox1和textBox2的服務器? –

+0

你的意思是說多於一個輸入共享名稱'textBox1'(或'textBox2')?不知道你爲什麼要這麼做......輸入通常是用他們的'name'屬性來標識的,所以如果你有重複的名字,你會從表單中傳遞重複的值。 – zeantsoi

1
var textBoxDefaultValues = { 
    textBox1 : '1', 
    textBox2 : '-1' 
}; 

$(formSelector).on('submit', function() { 
    $(this).find('input[type="text"]').each(function() { 
     if($(this).val() == '') { 
      $(this).val(textBoxDefaultValues[$(this).attr('name')]); 
     } 
    }); 
    return true; 
}); 
+0

有兩個問題:'$(formSelector)'是我的表單的ID嗎? 'attr('name')'也應該是值...?作爲我想要更新的文本框的內容? –

+1

1.您的表單的任何css選擇器(例如'form#my-form')或表單DOM元素的引用(example,document.forms [0]) – Atber

+1

2. Name - 表單元素的一個屬性。例如 Atber

1

這裏的另一種解決方案:

$("#myForm").submit(function() { 
    if $(this).find("input[type='text']").each(function() { 
    if $(this).val() == "") $(this).val("1"); 
    if $(this).val() == "..") $(this).val("-1"); 
    }); 
}); 

此解決方案可能會更直接/更容易理解。如果你有很多投入Atber的解決方案可能會更合適。由id屬性

如果出於某種原因,你需要複製多個輸入name屬性,可以針對輸入代替:

+0

您的代碼可以被替換爲這樣嗎? $(「。textBox1」)。val()==「」)$(「。textBox1」)。val(「1」);' 'if $(「。textBox2」).val()= =「..」)$(「。textBox2」)。val(「 - 1」);' –

+0

是的,你可以這樣做。 – frrlod

+0

嘗試並描述你現在的問題,並且我可以提供幫助。 – frrlod