0

在 jQuery 中,如何为每组手机获取多个下拉列表,例如:

客户可选择多于一部手机下单。首先,客户需要从下拉列表中选择一些手机(1 到 15)。

如果他们从下拉列表中选择了数字 5,则 5 组下拉菜单应如下所示:

第一组:

Select Phone [Dropdown / load entries via ajax] 

Select Contract Length [Dropdown / load entries via ajax]

Select Contract Plan [Dropdown / load entries via ajax]

Select Additional Addon [Dropdown  / load entries via ajax]

第二组:

Same dropdowns as above

另一个问题是,如果由于未正确填写表单而出现错误(来自 PHP 的验证) - 它将重定向回同一页面,但需要再次重新选择下拉菜单。如何使它也起作用?

4

2 回答 2

1

可以肯定的是,您必须将一些指示表单完成失败的变量带入会话或 html 中的某些隐藏元素,然后在文档加载时 - 检查该变量并手动调用这些下拉菜单。

或者

不允许单击提交按钮并检查 javascript 中的验证。然而,它不会那么安全,但它会为您和用户节省麻烦。我自己更喜欢在点击提交之前检查表单,等待几秒钟,直到页面重新加载,我面对我选择/写错东西的事实。

或者

使用 xmlhttprequest 或类似的方式自动验证提交点击,js 访问 php 文件,验证,返回结果并允许提交数据。不会超级安全,但是...您可以再次使用相同的 php 文件重新检查(如果有人试图非法传递一些数据而不是通过表单并且 xmlhttprequest 未能捕获它,则会被捕获)。对用户来说将是最安全和最好的方式。

于 2012-05-01T22:32:12.897 回答
1

假设这个标记:

<select id="qty">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
</select>
<div id="placeholder"></div>

使用这个 JavaScript:

$('#qty').change(function() {
    var qty = $('#qty').val() * 1;

    $('#placeholder').html(''); //Clear existing.

    for (var i = 0; i < qty; i++)
    {
        $('#placeholder').append(
            '<select id="phone_' + i + '"></select>');
    }
});

在您的 PHP 脚本中,您需要检查每个可能的字段名称 - 可能会很费力,最好在提交之前将它们组合到隐藏字段中。

看起来@AndriusNaruševičius 已经回答了你问题的另一半。

于 2012-05-01T22:38:22.553 回答