点按钮在HTML按钮的名称属性中是否合法

时间:2010-04-15 23:07:42

标签: jquery asp.net-mvc internet-explorer-8

包含一些MVC代码的页面:

<%=Html.SubmitButton("ChooseWebinar.Submit", "Continue to Registration Details")%><br/>

生成一个输入按钮,其中'。'嵌入在名称中:

<input id="ChooseWebinar_Submit" name="Webinar.Submit" type="submit" value="Continue" />

在页面加载时,此控件(提交按钮)被隐藏 - 当两个不同下拉列表中的一个注册一个值时,将显示该按钮:

function toggleChooseWebinarSubmit() {
if ($("#ChooseWebinar_RecordedWebinarId").val() || $("#ChooseWebinar_UpcomingWebinarId").val()) {
    $("#ChooseWebinar_Submit").show();
} else {
    $("#ChooseWebinar_Submit").hide();
}

我刚刚收到一位IE8用户的报告,该用户表示在下拉列表中选择一个值后,该按钮无法显示。我无法重现这个条件(我也尝试过兼容模式)。

显然,show / hide正在瞄准'ID'选择器,但我不禁怀疑控件名称中的那段时间。

任何已知问题? - 或者.change可能会出现问题而且切换永远不会被调用:

$(window).load(function() {
    toggleChooseWebinarSubmit();
    $("#ChooseWebinar_UpcomingWebinarId").change(function() {
        if ($(this).val()) {
            $("#ChooseWebinar_RecordedWebinarId").val("");
        }
        toggleChooseWebinarSubmit();
    });
    $("#ChooseWebinar_RecordedWebinarId").change(function() {
        if ($(this).val()) {
            $("#ChooseWebinar_UpcomingWebinarId").val("");
        }
        toggleChooseWebinarSubmit();
    });
});

THX

2 个答案:

答案 0 :(得分:1)

input name属性是cdata,这意味着可以进入HTML文档的任何字符都可以进入。 .当然是允许的。

我能想到的唯一模糊相关的问题是Opera不会在表单中放回“以前记住的”值(当你通过后退/前进输入页面但bfcache不可操作时),直到默认操作为止窗口加载,发生在onload之后。 IE在加载DOM内容后放入记住的值;其他浏览器直接将它们放入,因为它们的元素被解析。因此,如果您希望在加载过程中尽可能地保持按钮的隐藏性,则必须立即执行toggleChooseWebinarSubmit检查,一旦文档就绪,一次在onload之后执行0超时。 (大多数人都不打扰这一切.Opera的行为可能被认为是一个错误。)

对不起,可能不是很有帮助。听起来这是一个棘手的调试,只有这么少的信息......

答案 1 :(得分:0)

如果您尝试在服务器端读取输入值,则点将自动替换为下划线。

例如

<form action="/dot.php">
<input type="text" name="a.b" value="c">
</form>

此查询会产生:

/dot.php?a_b=c