2016-04-09 9 views
0

フォームを検証するためにこのスクリプトを作成しましたが、テキストフィールドを空白のままにしても、入力ボックスや警告メッセージの赤い背景はありませんさあ。ここでJavaScriptフォームの検証でアラートが表示されない、または入力背景の色が変化する

function validateForm() 
{ 
/* For all forms in the document */ 
for(var i in document.forms) 
{ 
    /* Get the forms inputs */ 
    var inputs = document.forms[i].getElementsByTagName("input"); 

    for(var j in inputs) 
    { 
     /* Make sure we don't try to validate the submit button */ 
     if(inputs[j].type == "text") 
     { 
      if(inputs[j].value.trim() == "" || inputs[j].value.trim() == null) 
      { 
       inputs[j].style.backgroundColor = "red"; 
       alert("Please ensure all boxes are filled in"); 
       return false; 
      } 
     } 
    } 
} 
} 

ことができますならば、私のいずれかの形式である:私もスペースを許可しないことをお勧めプレースホルダーテキスト

<input type="text" name="artists" placeholder="Search Artists"... 

別の問題のため

<form name="searchArtists" method="get" onsubmit="return validateForm()"> 
    <input type="text" name="artists" placeholder="Search Artists" maxlength="255" size="32" /> 
    <input type="submit" name="submit" value="Search"/> 
</form> 
+0

Er、私はJSの専門家ではありませんが、 "if(inputs [j] .value ==" "または類似したものではありませんか?それ以外の場合、 "値"と入力の1つを結ぶものは何ですか? – MartynA

+0

@MartynA Yeh私は使用していないがコードのその部分を更新しなかった別の変数として "value"を書きました。私はあなたが示唆したとおりに更新しましたが、まだ動作しません。 –

+0

あなたのデフォルト値は 'アーティストを検索する'、それもチェックしたり、クリック時にデフォルト値をクリアする... https://jsfiddle.net/jbrhodpz/テキストフィールドから削除すると、期待通りに機能します... – sinisake

答えて

2

使用placeholder属性を

if(inputs[j].value.trim() == "") { ... 
+0

提案してくれてありがとう、私はそれらを追加しました。私はまだそれがjsfiddleで動作する理由は混乱していますが、他の場所では動作しません。 –

0

あなたのコードiはフォームであり、jは入力です。そのため、document.forms[i]inputs[j]は機能しません。

固定JavaScript関数:

function validateForm() 
{ 
    /* For all forms in the document */ 
    for(var i in document.forms) 
    { 
     /* Get the forms inputs */ 
     var inputs = i.getElementsByTagName("input"); 

     for(var j in inputs) 
     { 
      /* Make sure we don't try to validate the submit button */ 
      /* Trim value to not allow values with only spaces */ 
      if(j.type == "text") 
      { 
       if(j.value == null || j.value.trim() == "") 
       { 
        j.style.backgroundColor = "red"; 
        alert("Please ensure all boxes are filled in"); 
        return false; 
       } 
      } 
     } 
    } 
} 

HTML:

<form name="searchArtists" method="get" onsubmit="return validateForm()"> 
    <input type="text" name="artists" placeholder="Search Artists" maxlength="255" size="32" /> 
    <button type="submit">Search</button> 
</form> 
0

は、私はまた、あなたの現在の変更提案、まずは私たちが検証する要素にIDを追加し、少しこれを削減しましょう」 、そのような "プレースホルダ「を" 値:JavaScriptに今の

<input id="artistQueryInput" type="text" name="artists" placeholder="Search Artists" maxlength="255" size="32" /> 

function validateForm(){ 
    //Get element 
    var inputElement = document.getElementById('artistQueryInput'); 

    //Get value 
    var rawArtistQueryString = inputElement.value; 

    //Strip all whitespace 
    var baseArtistQueryString = rawArtistQueryString.replace(/ /g, ""); 

    //Validate string without whitespace 
    if((baseArtistQueryString == '') || (baseArtistQueryString == NULL) ||){ 
     //Assuming j is artistQueryInput 
     inputElement.style.backgroundColor = "red"; 
     alert("Please ensure all boxes are filled in"); 
     return false; 
    } 
} 
関連する問題