我有 4 个下拉列表,即 dd1(父级)、dd2、dd3、dd4,最后三个下拉列表的初始值为 null。
我使用 ajax 从父下拉列表中获取最后三个下拉列表。
我使用 php validation(mkValid) 来验证下拉列表是否为空。
问题是当我在前 2 个下拉列表中选择一个值并且当我单击提交时,它得到了验证,但页面被刷新并且前两个下拉列表中的选定值变为空。因此,我需要保留这些值,直到所有下拉列表都有值。我在jquery中使用了ajax.stop(),但没有使用。帮助。!
您必须验证下拉列表客户端。PHP 是服务器端的,只有在将其发布到服务器后才能验证。这发生在您单击"提交"后。
向我们展示您的代码;)
通过以下方式阻止提交:
$('#form_id').submit(function(e) {
e.preventDefault();
// or
//return false;
})
你可以
这样做:
<select name="dropdown">
<option value="1" <?php echo isset($_POST["dropdown"]) && $_POST["dropdown"] == "1" ? "selected"; ?> >Option 1</option>
<option value="2" <?php echo isset($_POST["dropdown"]) && $_POST["dropdown"] == "2" ? "selected"; ?> >Option 2</option>
<option value="3" <?php echo isset($_POST["dropdown"]) && $_POST["dropdown"] == "3" ? "selected"; ?> >Option 3</option>
</select>
您可以参考 PHP 如何从下拉列表中保留所选选项以在提交时保持选中状态?
编辑:我刚刚读到您正在使用Smarty,在这种情况下,您可以使用:
<select name="dropdown">
<option value="1" {if !empty($dropdown) && $dropdown == "1"}selected{/if}>Option 1</option>
<option value="2" {if !empty($dropdown) && $dropdown == "2"}selected{/if}>Option 2</option>
<option value="3" {if !empty($dropdown) && $dropdown == "3"}selected{/if}>Option 3</option>
</select>
在你的 PHP 中:
global $smarty;
if(isset($_POST["dropdown"])){
//validation
$smarty->assign("dropdown", $_POST["dropdown"]);
}