该功能不起作用

the function is not working

本文关键字:不起作用 功能      更新时间:2023-09-26

好吧,所以我正在进行表单验证,这个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代码都运行得很好,它一定是这个函数的一部分当我按下发送按钮时,它不会起任何作用。有人知道问题出在哪里吗?提前感谢。

不能不应该action属性中有javascript函数,它需要是一个URI。如果验证成功,您可以直接调用funcs onsubmit

正如Aquinas所表明的那样,在action属性中调用javascript函数实际上是可能的,因此建议不要将js代码放入action属性中。

正如我所怀疑的那样。一个问题是这条线:

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;

请参阅更新的fiddle:http://jsfiddle.net/x7SBy/1/

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

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

看起来您正在尝试验证表单,如果有效,则调用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页面/资源。