2012-12-20 80 views
3

我有這個jQuery腳本:jQuery的,如果爲空

$(document).ready(function() { 
    //Focus the first field on page load 
    $(':input:enabled:visible:first').focus(); 
    //Clear all fields on page load 
    $(':input').each(function() { 
     this.value = ""; 
    }); 
}); 
//Clear field on focus 
$('input').focus(function() { 
    this.value = ""; 
}); 
//Allow only alphabetical characters in the fields 
$(':input').bind("keypress", function(event) { 
    if (event.charCode != 0) { 
     var regex = new RegExp("^[a-zA-Z]+$"); 
     var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 
     if (!regex.test(key)) { 
      event.preventDefault(); 
      return false; 
     } 
     $(this).next('input').focus(); 
    } 
}); 
//Enumerate submit click on [ENTER]-keypress 
$(':input').keypress(function(e) { 
    if (e.which == 13) { 
     jQuery(this).blur(); 
     jQuery('#submit').click(); 
    } 
}); 
//Submit form 
$('#submit').click(function() { 
    //Show loading image while script is running 
    $("#response").html("<img src='../images/loader.gif'>"); 

    //POST fields as array 
    function serealizeInputs(input) { 
     var array = []; 
     input.each(function() { 
      array.push($(this).val()) 
     }); 
     return array; 
    } 

    var letters = serealizeInputs($('.letters')); 

    $.post('loadwords.php', { 
     letters: letters 
    }, function(data) { 
     //Show the resonse from loadwords.php 
     $("#response").html(data); 
    }); 
}); 

http://jsfiddle.net/8S2x3/1/

我想它,進而優化了一點,但我不知道怎麼辦。

大部分的代碼是複製粘貼,修改,因爲我還在學習

我的問題(S): 我怎樣才能將焦點移動到文本框前面的退格按鍵?如果您輸錯了字符,我希望能夠刪除該字符,但如果再次按退格鍵,則會將焦點移至上一個輸入字段。所以基本上如果輸入是=''並且退格被按下,移動到前一個字段。如果輸入有價值,並按退格鍵,作爲正常(刪除字符)

另外我不知道如何添加css類,如果該字段中有值,如果它是空的添加另一個css類。

+1

你確定這是從無障礙的角度來看是個好主意?這聽起來像是完全出乎意料的行爲,只會讓用戶感到困惑。有些用戶按住刪除鍵而不是點擊它,並在完美的時刻停下來以防止刪除前面的字段,這是我知道我無法做到的。 – cimmanon

+0

我認爲它會好的。由於用戶只能輸入每個輸入字段的一個字符。 – David

回答

4

嘗試:

$(':input').keydown(function(e) { 
    if ((e.which == 8 || e.which == 46) && $(this).val() =='') { 
     $(this).prev('input').focus(); 
    } 
}); 

Fiddle

+0

按鍵事件不檢測退格。 –

+0

謝謝,更新... –

+0

@adaptive Seem的工作,謝謝! – David

1

嘗試這種情況:

$(':input').keydown(function(e) 
{ 
    if($(this).val() =='' && e.which ==8) 
    { 
     alert("Backspace pressed when input empty"); 
    }   
}); 
+1

這工作。謝謝,不過我會用@ adaptive的解決方案。你的CSS部分沒有任何好的腳本? – David

+0

http://jsfiddle.net/eliranmal/WumKf/可能會做你正在尋找與CSS。 –

2

這裏是一個解決方案,以填補一組四個輸入與每一個只含有一個字符,對於競賽或登錄或像我一樣,以確認邀請參加會議:

  1. 單擊輸入時,將選擇所有文本。
  2. 當輸入字符時,光標會轉到下一個輸入。
  3. 刪除時,光標將轉到上一個輸入。

Form with code inputs for login or contest

HTML:

<div class="code"> 
    <input type="text" name="code1" maxlength="1" /> 
    <input type="text" name="code2" maxlength="1" /> 
    <input type="text" name="code3" maxlength="1" /> 
    <input type="text" name="code4" maxlength="1" /> 
</div> 

的jQuery:

$(":input").on("focus",function(e){ 
    $(this).select(); 
}); 
$(":input").on("mouseup",function(e){ 
    $(this).select(); 
    return false; 
}); 
$(':input').keyup(function(e) { 
    if (e.which == 8 || e.which == 46) { 
     $(this).prev('input').focus(); 
    } 
    else { 
     $(this).next('input').focus(); 
    } 
});