功能不起作用

时间:2012-03-22 18:42:56

标签: javascript html validation

好吧,所以我正在进行表单验证这个JS中的一切都很好,但是现在我在输出中遇到问题,我正在尝试显示所有选择的数据。所以我使用了action属性并调用了以下函数:

function funcs()
    {
    var favor = document.reg.favor[selectedIndex].value; //Select input
    var fname = document.reg.fname.value; // text input
    var lname = document.reg.lname.value; // text input
    var email = document.reg.email.value; // text input
    var pass = document.password.value; //text input
    for(i=0;i<document.reg.rad.length;i++)
        {
            if(document.reg.rad[i].checked == true)
            {
                var rad = document.reg.rad[i].value; // Radio input
            }
        }
    if(document.reg.bike.checked == true)
        {
            var bike =  document.reg.bike.value; //CheckBox input
        }
    if(document.reg.car.checked == true)
        {
            var car = document.reg.car.value; //CheckBox input
        }
    document.write('<head><link type="text/css" rel="stylesheet" href="registrationtable.css"/></head><body>');
    document.write("<div class = 'team'>");
    document.write('<table>');
    document.write("<tr><td> שם  פרטי: </td><td>" + fname + "</td></tr> <tr><td> שם משפחה: " + lname + "</td></tr> <tr><td> אימייל: " + email + "</td></tr> <tr><td> סיסמא: " +pass +"</td></tr>");
    document.write("<tr><td> השחקן האהוב עליך הוא " + favor +"</td></tr>"); 
    document.write("</table>");
    document.write("</div></body>");
    }

这是表格标题:

<form name ="reg" action ="Javascript:funcs()" onsubmit ="return checkValidation()">

我想清楚所有其他javascript代码都运行正常,它必须是具有此功能的东西。 当我按下发送按钮时,它不会做任何事情。谁知道这个问题是什么? 谢谢你提前。

3 个答案:

答案 0 :(得分:4)

can't 不应该在你的action属性中有一个javascript函数,它必须是一个URI。如果验证成功,您可以调用funcs onsubmit

由于Aquinas已经证明在action属性中调用javascript函数实际上是可行的,因此建议您不要将js代码放在action属性中。

答案 1 :(得分:2)

我怀疑。一个问题是这一行:

var favor = document.reg.favor[selectedIndex].value;

应该是

var favor = document.reg.favor[document.reg.favor.selectedIndex].value;

你的第二个问题是:

var pass = document.password.value;

应该是:

var pass = document.reg.password.value;

请参阅更新的小提琴:http://jsfiddle.net/x7SBy/1/

最后,您应该使用Firefox并下载Firebug。它对于调试这样的JS问题非常宝贵。

编辑:你的JS还有其他问题,我不会详细介绍,但一般来说你不想使用document.reg.password,因为这样的问题。你应该使用document.getElementById。仅供参考。

答案 2 :(得分:0)

看起来您正在尝试验证表单,然后如果有效则调用funcs函数来更改页面上的HTML。

也许是这样的:

<form name="reg" action="" onsubmit="checkValidation()">

然后使用checkValidation函数暂停表单提交,如果有效,请调用funcs函数:

function checkValidation(e) {
    e.preventDefault();

    if (checkValidation()) {
        funcs();
    }
}

但如果是这种情况,则funcs函数不应编写<head>标记等。也许您只需将HTML添加到正文中,而不是尝试使用javascript将新的HTML文档放入DOM中。

替代解决方案

function checkValidation() {
   ... do your validation

   return true; // or false if invalid
}

然后在form的操作标记中使用真实的HTML网页/资源。