使用Javascript更改输入值

时间:2013-03-09 17:04:46

标签: javascript forms validation email input

标题似乎很简单,但我需要帮助。

我有一个带有字段输入“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;"/>

谢谢。

2 个答案:

答案 0 :(得分:3)

您尝试使用setAttribute是件好事,因为这是一个重要的方法,但问题是您不想修改value 属性在这种情况下,它是DOM的一部分,但您想要修改<input>元素的value 属性

email.value = 'Insert a correct email';

http://jsfiddle.net/XJZwm/

答案 1 :(得分:0)

试试这个email.value = 'Insert a correct email';代替email.setAttribute('value','Insert a correct email');