функция не работает - PullRequest
       0

функция не работает

0 голосов
/ 22 марта 2012

Хорошо, поэтому я делаю проверку формы, все хорошо в этом JS, но сейчас я сталкиваюсь с проблемой в выводе, я пытаюсь отобразить все выбранные данные.Поэтому я использовал атрибут действия и вызвал следующую функцию:

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 ]

4 голосов
/ 22 марта 2012

Вы не можете не должны иметь функцию javascript в вашем атрибуте action, это должен быть URI. Вы можете просто позвонить funcs onsubmit, если проверка прошла успешно.

Поскольку Aquinas показал, что вызов функции javascript в атрибуте action действительно возможен, рекомендуется не указывать js-код в атрибуте action.

2 голосов
/ 23 марта 2012

Как я и подозревал. Одна проблема - эта строка:

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, подобных этой.

Edit: есть другие проблемы с вашим JS, которые я не буду подробно рассматривать, но в целом вы не хотите использовать document.reg.password из-за подобных проблем. Вы должны действительно использовать document.getElementById. FYI.

0 голосов
/ 22 марта 2012

Похоже, вы пытаетесь проверить форму, а затем, если она действительна, вызовите функцию funcs, чтобы изменить HTML на странице.

Может быть, что-то вроде этого:

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

Затем функция checkValidation для приостановки отправки формы и, если она действительна, вызов функции funcs:

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

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

Но если это так, ваша функция funcs не должна писать теги <head> и тому подобное. Возможно, вы могли бы просто добавить HTML в тело вместо того, чтобы пытаться поместить новый документ HTML в DOM с помощью JavaScript.

Альтернативный раствор :

function checkValidation() {
   ... do your validation

   return true; // or false if invalid
}

Затем используйте реальную HTML-страницу / ресурс в теге действия form.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...