0

感谢任何人的帮助......下面的PHP包含一个txt文件中的项目列表,每个项目旁边是一个文本框供用户输入数量,默认设置为1。我正在尝试清除用户单击文本框时的框,有什么想法吗?

<input type='text' id='qty' name='$partno' size='1' value='0'>

到目前为止,我已经尝试过使用 JavaScript,但没有运气。

        <script>
        function validateName()
        {
            var x=document.forms["purchase"]["visitor"].value;
            if (x==null || x=="")
            {
                alert("Visitor name must be entered");
                return false;
            }
        }

        function name()
        {  
            document.getElementById('qty').value = "";
        }
    </script>
</head>

<body>

    <h1>Items Available</h1>

    <form id="purchase" name="purchase" action="confirm.php" method="post" onsubmit="return validateName()">
        <table>

            <h3>Visitor Name: <input type='text' name='visitor'></h3>
            <tr><th></th><th></th><th></th><th>Price</th><th>QTY</th></tr>

            <?php
            if (!($data = file('items.txt'))) {
                echo 'ERROR: Failed to open file! </body></html>';
                exit;
            }
            foreach ($data as $thedata) {

                list($partno, $name, $description, $price, $image) = explode('|', $thedata);
                echo "<tr><td><img src='$image' width='60' height='60' alt='image'></td><td><h3>$name</h3></td><td>&nbsp;&nbsp;&nbsp;&nbsp;$description</td>
                    <td>&nbsp;&nbsp;&nbsp;&nbsp;<b>&pound;$price</b></td><td><input type='text' id='qty' name='$partno' size='1' value='0'></td></tr>";
                //<input type='text' size='1' name='partno_qty' value='1'</td>
            }
            ?> 

        </table>

        <input type="submit" value="Purchase">
        <input type="reset" value="Clear">

    </form>
4

2 回答 2

1

将 onclick 或 onfocus 处理程序添加到您的“input name=qty”标签,或查看使用“placeholder”属性,这在您必须支持的某些浏览器中可能不起作用:

foreach ($data as $thedata)
{
    list($partno, $name, $description, $price, $image) = explode('|', $thedata);
                echo '<tr><td><img src="' . $image . '" width="60" height="60" alt="image"></td>'
                . '<td><h3>' . $name . '</h3></td><td>&nbsp;&nbsp;&nbsp;&nbsp;' . $description . '</td>'
                . '<td>&nbsp;&nbsp;&nbsp;&nbsp;<b>&pound;' . $price . '</b></td>'
                . '<td><input type="text" id="part-' . $partno . '" '
                . 'name="' . $partno . '" size="1" '
                . 'value="0" onfocus="this.value=\'\';" placeholder="0"></td>'
                . '</tr>';
}

“onclick/onfocus”方法将在每次单击/输入时清除该框。如果您希望使用“名称”功能,则调用更改为:

onfocus="name( this );"

并且“名称”更改为:

function name( obj )
{  
    obj.value = "";
}
于 2013-03-27T19:40:32.673 回答
0

您可以使用 HTML5placeholderrequired属性:

<form>
<input type="text" placeholder="Name" required />
<input type="submit" value="submit" />
</form>

演示

注意: Internet Explorer 10、Firefox、Opera、Chrome 和 Safari 支持
该属性。Internet Explorer 10、Firefox、Opera 和 Chrome 支持placeholder该标记。requiredSafari 不支持它

或者你可以在 JS 中这样做:

<input type="text" onfocus="inputFocus(this, 'initial text')" onblur="inputBlur(this, 'initial text')" value="initial text" />

'initial text'是页面加载时文本输入的默认值,例如('你的名字')。

function inputFocus(elm, placeholder){
    if (elm.value == placeholder){ elm.value = "" }

}

function inputBlur(elm, placeholder){
    if (elm.value == "" || elm.value == placeholder){
        elm.style.border = "1px solid red";
        elm.value = placeholder;
        alert("Visitor name must be entered");
    }else{
        elm.style.border = "1px solid green";
    }
}

演示

于 2013-03-27T19:47:29.127 回答