Jump to content
  • 0

аналог required + form.submit()


Lemming
 Share

Question

Здравствуйте, проблема с реализацией аналога required, я что то совсем ума не приложу что не так..

какие проблемы:

1) работает некорректно, то подтверждает что необходимое поле заполнено, когда там ничего нет, то говорит что поле заполнено, когда оно пустое..

2) даже если заставить работать правильно и выполняться нужные условия, (frm).submit(); не работает((

Можете подсказать в чем дело?

Вкратце форма:

<form id="frm" name="formalin" action="nextpage.html" method="POST">
<table class="tables">
<tr><td><input id="s1" type="text"></td></tr>
<tr><td><button id="subm" type="button" onclick="sub('s1','frm')">Go!</button></td></tr>
</table></form>

Жабаскрипт:

var flagger = false;
var txt;
function sub(elem, frm)
{
elem = document.getElementById(elem);
elem.onchange = onch;
if (txt == null)
{
elem.style.backgroundColor = "#faa";
flagger = true;
}
else
{
flagger = false;
elem.style.backgroundColor = "#e5e5e5";
document.getElementById(frm).submit();
}
}

function onch()
{
txt = this.value;
}

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Здравствуйте, проблема с реализацией аналога required, я что то совсем ума не приложу что не так..

какие проблемы:

1) работает некорректно, то подтверждает что необходимое поле заполнено, когда там ничего нет, то говорит что поле заполнено, когда оно пустое..

2) даже если заставить работать правильно и выполняться нужные условия, (frm).submit(); не работает((

Можете подсказать в чем дело?

Вкратце форма:

<form id="frm" name="formalin" action="nextpage.html" method="POST">
<table class="tables">
<tr><td><input id="s1" type="text"></td></tr>
<tr><td><button id="subm" type="button" onclick="sub('s1','frm')">Go!</button></td></tr>
</table></form>

Жабаскрипт:

var flagger = false;
var txt;
function sub(elem, frm)
{
elem = document.getElementById(elem);
elem.onchange = onch;
if (txt == null)
{
elem.style.backgroundColor = "#faa";
flagger = true;
}
else
{
flagger = false;
elem.style.backgroundColor = "#e5e5e5";
document.getElementById(frm).submit();
}
}

function onch()
{
txt = this.value;
}

На что указывает this в твоём обработчике??

Попробуй переписать обработчик так:


function onch(e)
{
var eventTar = e.target || event.srcElement;
var el = eventTar;
txt = el.value;
}

Link to comment
Share on other sites

  • 0

На что указывает this в твоём обработчике??

Попробуй переписать обработчик так:


function onch(e)
{
var eventTar = e.target || event.srcElement;
var el = eventTar;
txt = el.value;
}

Эту функцию я писал по аналогии с каким то примером из интернетов, this как я понял указывает в данном контексте на объект, для которого вызывается функция onch.

Ваш вариант ничего не изменил(

s0rr0w

А нельзя ли чуть подробнее?)

Незнаю верный ли ход, но исправил сравнение на

if (txt == "" || txt == null) 

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

Ну и сабмит формы все также не работает, даже если сабмитить без всех этих условий((

Link to comment
Share on other sites

  • 0

Попробуй вместо

if (txt == null) 

это -->

if (!txt) 

Спасибо, заменил свое условие на ваше, и по-другому навесил функцию onchange на необходимое поле, работает корректно :yahoo:

НО основная проблема - form.submit() не работает((

UPD: form.submit()все же работает! Ура! :boast:

Edited by Lemming
Link to comment
Share on other sites

  • 0

Попробуй вместо

if (txt == null) 

это -->

if (!txt) 

Спасибо, заменил свое условие на ваше, и по-другому навесил функцию onchange на необходимое поле, работает корректно :yahoo:

НО основная проблема - form.submit() не работает((

UPD: form.submit()все же работает! Ура! :boast:

и по-другому навесил функцию onchange на необходимое поле

как именно навесил??

Link to comment
Share on other sites

  • 0

как именно навесил??

Ну эта функция изначально навешивалась через JS вот таким примерно образом - elem.onchange = onch;, а я убрал это и навесил в html-коде на нужное поле вот так <input onchange="onch(this)">

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy