2016-11-12 7 views
0

извините за то, что может быть вопросом о нобе. Я уже некоторое время занимаюсь этой формой, но по какой-то причине я не могу заставить ее работать. Изменения цвета работают, но кнопка отправки просто не приводит к ссылке ..Не могу получить эту форму для работы над HTML5

<center> 
    <form name="form1" method="POST"> 
     <input id="codebox1" type="text" onchange="checkFilled1();" /> 
     <input id="codebox2" type="text" onchange="checkFilled2();" /> 
     <input id="codebox3" type="text" onchange="checkFilled3();" /> 
     <br> 
     <br> 
     <input id="button1" type="submit" value="Submit" onClick="testResults(this.form)" /> 
    </form> 
</center> 

А вот функции:

<script> 
function checkFilled1() { 
    var inputVal = document.getElementById("codebox1"); 
    if (inputVal.value == "1234") { 
     inputVal.style.backgroundColor = "lightgreen"; 
    } else { 
     inputVal.style.backgroundColor = "red"; 
    } 
} 
checkFilled1(); 
</script> 

<script> 
function checkFilled2() { 
    var inputVal = document.getElementById("codebox2"); 
    if (inputVal.value == "1234") { 
     inputVal.style.backgroundColor = "lightgreen"; 
    } else { 
     inputVal.style.backgroundColor = "red"; 
    } 
} 

checkFilled2(); 
</script> 

<script> 
function checkFilled3() { 
    var inputVal = document.getElementById("codebox3"); 
    if (inputVal.value == "1234") { 
     inputVal.style.backgroundColor = "lightgreen"; 
    } else { 
     inputVal.style.backgroundColor = "red"; 
    } 
} 

checkFilled3(); 
</script> 

<script> 
function testResults() { 
    var inputVal1 = document.getElementById("codebox1"); 
    var inputVal2 = document.getElementById("codebox2"); 
    var inputVal3 = document.getElementById("codebox3"); 
    if (inputVal1.value == "1234") && (inputVal2.value == "1234") && (inputVal3.value == "1234") { 
     window.open("http://google.com", "_parent"); 
    } else { 

    } 
} 

testResults(); 
</script> 

Спасибо за помощь!

+1

Избавиться от встроенного Javascript и переместить все это в отдельный файл. Все встроенные вызовы функции могут быть выполнены простым добавлением идентификатора к элементу и ссылкой на него в файле Javascript. –

+0

@MichaelMcCoy вы можете уточнить, что вы сказали о встроенных вызовах функций? Любой учебник или документы MDN будут приятнее! – asgs

ответ

0

Изменить это:

<form name="form1" method="POST"> 

[...] 

<input id="button1" type="submit" value="Submit" onClick="testResults(this.form)" /> 

к этому:

<form name="form1" onSubmit="testResults()" method="POST"> 

[...] 

<input id="button1" type="submit" value="Submit" /> 

===

рефакторинга Версия

var codeboxes = document.getElementsByClassName('codebox'); 
 

 
function testResults() { 
 

 
    var correctValues = 0; 
 

 
    for (var i = 0; i < codeboxes.length; i++) { 
 
     if (codeboxes[i].value === '1234') { 
 
      correctValues++; 
 
     } 
 
    } 
 

 
    if (correctValues === codeboxes.length) { 
 
    \t window.alert('You have entered all ' + codeboxes.length + ' values correctly.'); 
 
    } 
 

 
    else { 
 
\t window.alert('You have not entered all ' + codeboxes.length + ' values correctly.'); 
 
    } 
 
}
<form name="form1" onSubmit="testResults()" method="POST"> 
 
<input class="codebox" type="text" /> 
 
<input class="codebox" type="text" /> 
 
<input class="codebox" type="text" /> 
 
<input id="button1" type="submit" value="Submit" /> 
 
</form>

+0

Спасибо за помощь, Рунин! Но это все еще не работает. Эта ошибка возникает вместо формы: \t Этот XML-файл, похоже, не связан с ним. Дерево документов показано ниже. InvalidArgument Недопустимый аргумент.

объект POST ожидает Content-Type многокомпонентный/form-данные
Lukasj10

+0

Больше из любопытства, чем все остальное, я добавил свою собственную «рефакторинг версии» на пост выше. Насколько я могу судить, он работает нормально. – Rounin

+1

Спасибо, Рунин! Все ваши предложения заставили его работать в автономном режиме. Должна быть проблема с конкретным шаблоном (HTML5), который я попытался включить в это. – Lukasj10

1

Вы называете метод, TestResults который не принимает никаких параметров. Измените разметку кнопки отправки на следующую и вызывается метод testResults.

<input id="button1" type="submit" value="Submit" onClick="testResults()" /> 

Без параметров.

0

У вас есть синтаксическая ошибка в вашем JavaScript. Откройте ваш браузер инструментов консоли и посмотреть:

Unexpected token &&

Вам нужно обернуть весь, если условие в скобках, как это:

if ((inputVal1.value == "1234") && (inputVal2.value == "1234") && (inputVal3.value == "1234")) { 
window.open("http://www.example.com", "_parent"); 

Тем не менее, это не представят данных в форма. Он просто откроет URL-адрес, если условия верны - это то, что вы задали в своем вопросе.

0

function checkFilled(inp) { 
 
    var inputVal = inp; 
 
    if (inputVal.value == "1234") { 
 
    inputVal.style.backgroundColor = "lightgreen"; 
 
    } else { 
 
    inputVal.style.backgroundColor = "red"; 
 
    } 
 
} 
 

 
function testResults() { 
 
    var inputVal1 = document.getElementById("codebox1"); 
 
    var inputVal2 = document.getElementById("codebox2"); 
 
    var inputVal3 = document.getElementById("codebox3"); 
 
    if ((inputVal1.value == "1234") && (inputVal2.value == "1234") && (inputVal3.value == "1234")) { 
 
    alert('Here comes window opening...'); 
 
    //window.open("http://google.com", "_blank"); 
 
    } else { 
 
    alert('Error ...'); 
 
    } 
 
} 
 

 
//testResults();
<form name="form1" method="POST"> 
 
    <input id="codebox1" type="text" onchange="checkFilled(this);" /> 
 
    <input id="codebox2" type="text" onchange="checkFilled(this);" /> 
 
    <input id="codebox3" type="text" onchange="checkFilled(this);" /> 
 
    <br> 
 
    <br> 
 
    <input id="button1" type="submit" value="Submit" onClick="testResults(this.form)" /> 
 
</form>

вы сделали одну ошибки в TestResults() функцию, отсутствуют() в случае ... увидеть фрагмент кода (с небольшой оптимализацией)

+0

Спасибо за ваш вклад! Тем не менее, ничего. Я получаю эту ошибку: Этот XML-файл, как представляется, не имеет связанной с ним информации о стиле. Дерево документов показано ниже. InvalidArgument Недопустимый аргумент.

Объект POST предполагает, что Content-Type multipart/form-data
Lukasj10

+0

@ Lukasj10: 1. Вам нужно ПОЧТОВАТЬ ваши данные? Если нет, напишите кнопку отправки на обычную кнопку и не напишите какой-либо метод для создания открытого тега. 2. У вашего html-файла правильное расширение/и правильный заголовок (liket: )? –

0

Корректировать форму тега как показано ниже,

<form name="form1" method="POST" onSubmit="testResults()"> 

редактировать свои кнопки, как показано ниже представить

<input id="button1" type="submit" value="Submit"/> 

Редактировать, если заявление, как следует,

if((inputVal1.value == "1234") && (inputVal2.value == "1234") && (inputVal3.value == "1234")) 
{ 
    window.open("http://www.google.com", "_parent"); 
} 
Смежные вопросы