我有5個輸入文本(答案選項),如果在非空輸入之前有空白輸入,則會給出錯誤。從A到E選項說明,用戶只填寫C和D.系統會給出錯誤,表示選擇A和B爲空(而E不報告爲錯誤)。代碼如下。問題是,有沒有更簡單的方法來做到這一點?jquery檢查前一個元素的空字段
https://jsfiddle.net/cyw8otLo/
<div>
<input type="text" id="optA" value="" /><br/>
<input type="text" id="optB" value="" /><br/>
<input type="text" id="optC" value="C" /><br/>
<input type="text" id="optD" value="D" /><br/>
<input type="text" id="optE" value="" /><br/>
<input type="submit" id="register" value="Register" />
</div>
腳本
function getInputTextOf(searchStr, str, caseSensitive) {
var optArr = {1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E'};
var startIndex = 0, searchStrLen = searchStr.length;
var index, indices = [];
if (!caseSensitive) {
str = str.toLowerCase();
searchStr = searchStr.toLowerCase();
}
while ((index = str.indexOf(searchStr, startIndex)) > -1) {
indices.push(optArr[5 - index]);
startIndex = index + searchStrLen;
}
return indices;
}
var $input = $('input:text'),
$register = $('#register');
$('#register').on('click', function() {
var trigger = true;
var str = '';
$($('div > input[id^="opt"]').get().reverse()).each(function (i) {
str = str + ($(this).val() === '' ? 0 : 1);
});
var space = '*****';
var start = str.indexOf("10"); //input start at
if (start > -1) {
var abc = space.substring(0, start+1) + str.substring(start+1, str.length);
var indices = getInputTextOf("0", abc, false);
alert('Option ' + indices.sort() + ' still empty!');
}
});
我用這個修改你的代碼來顯示哪些字段是空的https://jsfiddle.net/a0f7b258/。但警報也顯示'未定義'。你能告訴爲什麼嗎?而且,我修改你的代碼,'這個'部分,變成'$(this)',但它不起作用。我知道$(this)是jquery對象,但它爲什麼不起作用? – 2015-02-12 12:40:27
@ aries.wandari參見https://jsfiddle.net/arunpjohny/a0f7b258/1/ – 2015-02-12 12:49:06
如果你是'$(this)'那麼獲取值使用'$(this).val()'而不是'$ (this).value' – 2015-02-12 12:50:09