使用JavaScript比较DB的PHP变量与表单字段Onchange,并相应地显示/隐藏



重述:

有一个PHP变量: $地址

有一个形式变量 addy

如果用户输入表单变量的值与PHP变量不匹配,则我要显示的跨度有一个跨度

例如,$地址变量=" 123 4th st"

Addy表单字段中的用户类型" 132 4th st"

用户单击字段(文本输入)后,由于地址不匹配,我希望跨度ID add_ck显示"地址不匹配"

但是,如果用户将Addy的内容更改为" 123 4th ST",则跨度ID add_ck不会显示任何内容,或者"。

我知道您可以通过Onchange事件进行表演/隐藏事件,并且我以前在下拉列表中使用过。但是,我要查找文本条目"更改"(通过单击字段外或进入其他字段来确定)与php变量以触发跨度显示/no-display事件是我试图找出的。

这是我到目前为止尝试的:

<? 
$address = "123 4th St";
?>
<html>
<head>
<script>
var db_address = '<?php echo $address; ?>';
document.getElementById('address_field').addEventListener("change", function(){
compare_addresses();
});
var compare_addresses = function(){
var new_address = document.getElementById('address_field').value;
var the_span = document.getElementById('add_ck');
if(db_address == new_address)
{
//The addresses are equal. Show 'add_ck'.
add_ck.style.display = 'block';
}
else
{
//The addresses are not equal. Hide'add_ck'.
add_ck.style.display = 'none';
}
}
</script>
</head>
<body>
<form name="form" method="POST" action="">
<input type="text" name="addy" id="address_field">
<input type="submit"> 
</form>
<span id="add_ck">Testing</span>
</body>
 </html>

首先,您的输入字段应具有ID。假设我们称其为 address_field

<input type="text" name="addy" id="address_field">

将php的值放在JS变量中:

var db_address = '<?php echo $address; ?>';

将事件侦听器添加到您的文本框:

document.getElementById('address_field').addEventListener("change", function(){
   compare_addresses();
});

compare_addresses功能中,您比较两个字符串:

var compare_addresses = function(){
    var new_address = document.getElementById('address_field').value;
    var the_span = document.getElementById('add_ck');
    if(db_address == new_address)
    {
        //The addresses are equal. Show 'add_ck'.
        the_span.style.display = 'block';
    }
    else
    {
        //The addresses are not equal. Hide'add_ck'.
        the_span.style.display = 'none';
    }
}

PHP是服务器端,JavaScript在客户端上,因此在此处不确定的var addy seams。仅当表单在var $ _post ['addy']

中提交时,才应定义 addy var。

最新更新