3

タイトルは簡単そうですが、助けが必要です。

「email」というフィールド入力のあるフォームがあり、ユーザーが入力するまでその値はnullです。さて、送信ボタンをクリックすると、関数validate()が呼び出されます。これは次のとおりです。

function validate(){
    var email=document.getElementById("email");
    if(!(/[\w-\.]{3,15}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/.test(email))) {
        email.setAttribute('value','Insert a correct email');
        email.style.border="2px solid red";
    } else {
        alert("Valid field"); // This is to test it works
        email.style.border="2px solid #63ce40";
        this.form.submit();
    }
    }

ここでやりたいのは、挿入された電子メールが要件を満たしていない(無効である)場合は、「正しい電子メールを挿入」で入力の値を変更することです。

フィールドが空で[送信]をクリックすると、完全に機能しますが、テキストを挿入して[送信]をクリックすると、フィールドに2pxの赤い境界線が表示されますが、テキストは変更されません。

[送信]をクリックすると、書き込まれた間違ったメールが削除され、「正しいメールを挿入」というテキストに置き換えられるようにするために、何をする必要があるのか​​知りたいです。

入力は次のとおりです。

<li>
    <input type="text" id="email" name="email" 
    value="" onfocus="this.value=''" size="40"/>
</li>

そして、私が使用している送信ボタン:

<input id="bsubmit" type="button" value="Submit"
name="submit" onclick=";this.disabled=true;validate();
this.disabled=false;"/>

ありがとうございました。

4

2 に答える 2

3

setAttributeこれは重要なメソッドであるため、まったく使用しようとしていたのは良いことですが、問題は、この場合、DOMの一部であるvalue 属性<input>を変更したくないが、要素のvalue プロパティを変更したいということです。。

email.value = 'Insert a correct email';

http://jsfiddle.net/XJZwm/

于 2013-03-09T17:09:27.843 に答える
0

email.value = 'Insert a correct email';代わりにこれを試してくださいemail.setAttribute('value','Insert a correct email');

于 2013-03-09T17:09:34.713 に答える