Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрет преждевременной отправки формы
 
 автор: aexb   (28.04.2007 в 16:10)   письмо автору
 
 

Есть файл order.html:
<html>
<head>
<title>форма</title>
<script>
var textFields = null
var selectField = null
var selectFieldLabel = null
var MainSubmitButton = null

function RegisterRequiredTextFields (fieldsStr)
{
    fieldsStr = fieldsStr.replace (/\s+$/g, "")
    textFields = fieldsStr.split (' ')
}

function RegisterRequiredSelectField (fieldStr)
{    
    selectField = document.getElementById (fieldStr)
    selectFieldLabel = document.getElementById (fieldStr + 'L')
}


function DisableSubmitButton()
{
    MainSubmitButton = document.getElementById ('MainSubmitButton')
    if (MainSubmitButton && (selectField || textFields)) MainSubmitButton.disabled = true
}

function ValidateRequired()
{
    var ok = true

    if (selectField)
    {
        if (!selectField.selectedIndex) ok = false
        if (selectFieldLabel) selectFieldLabel.className = selectField.selectedIndex ? "valid" : "required"
    }

    if (textFields)
    {
        for (c = 0; c!=textFields.length ; c++)
        {
            var input = document.getElementById (textFields[c])
            var label = document.getElementById (textFields[c] + 'L')
            if (input && label)
            {
                var value = input.value
                value = value.replace (/^\s+/g, "")
                value = value.replace (/\s+$/g, "") 

                if (value == '') ok = false
                label.className = value != '' ? "valid" : "required"
            }
        }
    }
    if (MainSubmitButton) MainSubmitButton.disabled = !ok
}
</script>
</head>
<body onload="DisableSubmitButton(); document.getElementById('q1').focus();">
<SCRIPT type=text/javascript>
<!--
    RegisterRequiredTextFields('q1 q2'); RegisterRequiredSelectField('q3 q4');
//-->
</SCRIPT>
<form>
<div>
<table id="order_table" cellpadding=0 cellspacing=0 border=0 align=center>
<tr>
    <td id="fld"><SPAN id=q1L>*</SPAN></td>
    <td id="l">Ваше имя:</td>
    <td>
        <input id="q1" onkeyup="ValidateRequired()" type="text" value="" name="sender_name" maxlength=45>
    </td>
</tr>
<tr>
    <td id="fld"><SPAN id=q2L>*</SPAN></td>
    <td id="l">E-mail:</td>
    <td>
        <input id="q2" onkeyup="ValidateRequired()" type="text" value="" name="sender_email" maxlength=30>
    </td>
</tr>
<tr>
    <td><SPAN id=q3L>*</SPAN></td>
    <td id="l">Желаемый пол щенка:</td>
    <td>
        <select id="q3" name="puppy_sex"><option value="#" /><option value="any" />не имеет значения<option value="male" />кобель<option value="female" />сука</select><br />
    </td>
</tr>
<tr>
    <td><SPAN id=q4L>*</SPAN></td>
    <td id="l">Предпочтительный возраст щенка:</td>
    <td>
        <select id="q4" name="puppy_age"><option value="#" /><option value="any" />не имеет значения<option value="3_m" />3 месяца<option value="6_m" />6 месяцев<option value="12_m" />12 месяцев<option value="adult" />взрослый</select><br />
    </td>
</tr>
<tr>
    <td></td>
    <td>
    </td>
    <td>
        <input id="MainSubmitButton" type="submit" value="Заказать">    
    </td>
</tr>
</table>
</form>
</div>
</body>
</html>

Javascript честно украден с одного из сайта и частично разобран и уже почти готов к употреблению.

Вопрос: как сделать так, чтобы кнопка submit не активизировалась без выбора значения <select>ов? То есть до тех пор, пока не будут заполнены ВСЕ поля со звездочками?

   
 
 автор: zerocool   (28.04.2007 в 16:23)   письмо автору
 
   для: aexb   (28.04.2007 в 16:10)
 

Так у Вас и так это есть

   
 
 автор: aexb   (28.04.2007 в 16:26)   письмо автору
 
   для: zerocool   (28.04.2007 в 16:23)
 

у меня не работает. то есть, работает по двум текстовым полям, но не по селектам. мне необходимо, чтобы атрибут disabled убирался только после заполнения и текстовых полей, и выбора значений из всех селектов.

   
 
 автор: aexb   (28.04.2007 в 21:48)   письмо автору
 
   для: aexb   (28.04.2007 в 16:10)
 

неужто никто так и не поможет? :'(

   
 
 автор: ilyaILF   (28.04.2007 в 22:42)   письмо автору
 
   для: aexb   (28.04.2007 в 21:48)
 

Немножко еще допеределав код и все-таки установив в <select>-ы обработчик события onchange получилось следующее - в прикрепленном файле:

   
 
 автор: aexb   (28.04.2007 в 22:57)   письмо автору
 
   для: ilyaILF   (28.04.2007 в 22:42)
 

спасибо огромное! )))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования