Как исправить проблему с действием формы в XHTML 1.0 Strict - PullRequest
1 голос
/ 07 декабря 2011

У меня проблема с проверкой моего кода на XHTML 1.0 Strict.

Я использую w.3 валидатор , чтобы попытаться проверить мою страницу.Он сообщает мне

Строка 112, столбец 24: обязательный атрибут "action" не указан

        <form id="orderform">

Приведенный выше атрибут необходим для элемента, которыйвы использовали, но вы опустили его.Например, в большинстве типов документов HTML и XHTML атрибут «type» требуется для элемента «script», а атрибут «alt» - для элемента «img».

Типичные значения для type - это type= "text / css" для и type = "text / javascript" для скрипта.

Я относительно новичок в XHMTL и CSS, и я также изучаю Javascript в настоящее время, у меня естьсделал поиск в Google, и я нашел много людей, говорящих об использовании строки Javascript для исправления ошибки, но ни один из них не достаточно ясен.Здесь есть кто-нибудь, кто может дать мне четкое объяснение?

Это мой код XHTML ..

    <form id="orderform">
<div class="field">
    Name:
    <input type="text" id="name" name="name" value="" />
</div>
<div class="field">
    # of Home shirts:
    <input type="text" id="homeshirt" name="home" value="" onchange="updateOrder();" />
</div>
<div class="field">
    # of Away shirts:
    <input type="text" id="awayshirt" name="away" value="" onchange="updateOrder();" />
</div>
<div class="field">
    Date of collection:
    <input type="text" id="date" name="date" value="" />
</div>
<div class="field">
    Subtotal:
    <input type="text" id="subtotal" name="subtotal" value="" readonly="readonly" />
</div>
<div class="field">
    Tax:
    <input type="text" id="tax" name="tax" value="" readonly="readonly" />
</div>
<div class="field">
    Total:
    <input type="text" id="total" name="total" value="" readonly="readonly" />
</div>
<div id="button">
    <input type="button" class="button" value="Place Order" onclick="placeOrder(this.form);" />
</div>
</form>

и мой Javascript ...

<script type="text/javascript">
        function updateOrder() {
            const TAXRATE = 0.0925;
            const SHIRTPRICE = 39.99;
            var numHomeShirt = parseInt(document.getElementById("homeshirt").value);
            var numAwayShirt = parseInt(document.getElementById("awayshirt").value);
            if (isNaN(numHomeShirt))
                numHomeShirt = 0;
            if (isNaN(numAwayShirt))
                numAwayShirt = 0;
            var subTotal = (numHomeShirt + numAwayShirt) * SHIRTPRICE;
            var tax = subTotal * TAXRATE;
            var total = subTotal + tax;
            document.getElementById("subtotal").value = "£" + subTotal.toFixed(2);
            document.getElementById("tax").value = "£" + tax.toFixed(2);
            document.getElementById("total").value = "£" + total.toFixed(2);
        }

        function placeOrder(form) {
            if (document.getElementById("name").value == "")
                alert("I'm sorry but you need to provide a name to print on the shirt.");

            else if (document.getElementById("date").value == "")
                alert ("I'm sorry but you must provide a date you can collect your shirt(s).");

        }
    </script>

Спасибо за ваше время,

Приветствия.Джейми

Ответы [ 4 ]

1 голос
/ 07 декабря 2011

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

В настоящее время вы реализуете только поведение в Javascript - еслиэто отключено, тогда ничего не произойдет.В идеале вы должны указать на скрипт, обычно тот же PHP-скрипт, который генерирует форму, чтобы обработать нажатие кнопки отправки:

<form id="your_id" action="<?=$_SERVER['PHP_SELF']?>">

Тогда ваш скрипт должен обработать отправку в случае, если Javascript не был«т.

1 голос
/ 07 декабря 2011

Нет необходимости в JavaScript.Если вы используете php, просто добавьте следующий код:

<form id="your_id" action="<?=$_SERVER['PHP_SELF']?>">

По сути, этот код установит действие на той же странице.

Или другие предлагают просто добавить пустое действие:)

1 голос
/ 07 декабря 2011

Чтобы исправить эту конкретную ошибку проверки, вам нужно включить атрибут действия в элемент формы.

<form id="orderform" action="">

Похоже, вы используете JavaScript для обработки отправки формы, поэтому вы просто должны оставить действие пустым, в противном случае присвойте ему значение, относящееся к php-сценарию отправки формы.

1 голос
/ 07 декабря 2011

Может быть, это слишком очевидно, и я что-то упускаю, но почему бы просто не добавить атрибут действия в форму?

...