0

こんにちは、私はJavaScriptが初めてで、次の機能があります。

function checkform() {
    var theForm = document.getElementById('login_form');
    var regName = /^[a-zA-Z ]+$/;
    var firstname = theForm.firstname.value;

    if (
        (firstname == "" || theForm.firstname.value.length > 30 ) &&
        (regName.test(firstName) == false)
    ) {
        alert("That is not a valid first name!");
        theForm.firstname.focus();
        return false;
    }
}

データが空ではなく、30を超えていないことを確認するという意味で機能します。私の問題は、現在、ユーザーが正規表現と一致しないデータ、つまり数値データを入力できることです。ロジックに問題は見られません。

ありがとう

4

3 に答える 3

3

条件文でこれを試してください:

if ((firstname == "" || theForm.firstname.value.length > 30 ) || (regName.test(firstname) == false)) {
    // ...
}

「&&」(and) 演算子を「||」に変更しました。(または) 両方の条件 (空または 30 より大きい AND 正規表現と一致しない) に対してチェックする必要はなく、それらのいずれか (空または 30 より大きいまたは正規表現を計算しない) だけをチェックする必要があるためです。

于 2013-03-17T14:42:37.383 に答える
1

それを試してみてください

 var regName = /^[a-zA-Z ]{3,30}$/;
 if (!regName.test(firstName)){ //make an error
于 2013-03-17T14:42:27.650 に答える
0
<input id="txtChar" onkeypress="return isNumberKey(event)" 
       type="text" name="txtChar">

   function isNumberKey(evt)
   {
      var charCode = (evt.which) ? evt.which : event.keyCode;
      if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57) || event.value > 30)
         return false;

      return true;
   }
于 2013-03-17T14:50:10.827 に答える