【问题标题】:Getting the value of a field when the ID uses dot.notationID使用dot.notation时获取字段的值
【发布时间】:2012-02-10 16:37:16
【问题描述】:

查看我的编辑以获取更多详细信息:

我已经为此做了很多乱七八糟的事情,但无济于事。是时候求助专家了...

我的表单元素上的 ID 使用的是 dot.notation(对此我无能为力)。鉴于这一警告,以下内容非常有效:

$("input[id='primaryEmail.Revisit']").blur(function() {
        var emailValue = $(this).val();
        alert(emailValue);
});

但是,以下不是:

function getEmailVal() {
        var emailValue = $("input[id='primaryEmail.Revisit']").val();
        return emailValue;  
}
$("#login").click(function() {
        var emailValue = getEmailVal();
        alert(emailValue);
        rebakeCookies();
});

我也试过这些:

function getEmailVal() {
        var emailValue = $("input[id='primaryEmail.Revisit']").attr("value");
        return emailValue;  
}

function getEmailVal() {
        var emailValue = $("#primaryEmail\\.Revisit").val();
        return emailValue;  
}

首先,我如何使用函数获取值,其次,为什么我可以将 val() 与 blur 函数一起使用,而不是与我的函数一起使用?

非常感谢您对此的任何帮助!

我已经解决了——至少就我的目的而言。但是我仍然不确定原始问题的答案是什么?为了解决这个问题,我在输入字段中添加了一个类并引用了该选择器——这很好用:

function getEmailVal() {
        var emailValue = $(".primaryEmailRevisit").val();
        return emailValue;  
    }

$("#login").click(function() {
        var emailValue = getEmailVal();
        alert(emailValue);
        rebakeCookies();
    });

【问题讨论】:

  • 函数真的被调用了吗?添加console.logalert进行调试。
  • 如果在输入中设置了 id,则您根本不需要调用中的输入部分。将$("input[id='primaryEmail.Revisit']") 更改为$("#primaryEmail.Revisit")。不确定这是否能解决任何问题
  • 您已经证明您的选择器有效。这意味着你没有得到你期望的价值。要知道为什么,我们需要知道getEmailVal 是如何/何时被调用的。
  • @Henesnarfel:这更有可能打破它。如果 . 不是引号中属性值的一部分,则需要对 . 进行转义。
  • @VaughnD.Taylor: The code you provided works fine. 不管是什么问题,它都被排除在问题之外。

标签: jquery forms


【解决方案1】:

您是否在文档准备好后调用该函数?在文档准备好之前永远不会调用模糊,因此模糊会起作用是有道理的,但如果您在渲染元素之前调用函数,则您的函数不会。

以下是调用函数的示例。我强烈建议使用这种选择器格式,因为它是更常见的表示法。

html:

<input id="primaryEmail.Revisit" value="this.works@hotgmail.comnet" />
<div id="result"></div>

js:

var getEmailVal = function(){
    return $('input#primaryEmail\\.Revisit').val();
};

$(document).ready(function(){
    $("#result").html(getEmailVal());
});

【讨论】:

  • 问题不在于选择器。相同的选择器用于分配 blur 处理程序,并且该选择器工作正常。
  • 我觉得你需要再看一遍这个问题。 OP 表示第一个代码示例有效。您的回答对解决问题没有任何帮助(部分原因是问题不完整)。
  • 啊,你是对的。再次编辑。代码示例现在演示了调用他的函数。文件准备好后很可能没有被调用。
  • 我想说您更新的答案很可能是问题所在。没有更多信息无法确定。
  • 我从 click 函数调用 getEmailVal 函数。这些都在文档中准备好了。
【解决方案2】:

即使获得价值,它也应该可以正常工作。看看这个小提琴它工作正常。您的代码中可能存在其他问题。

$(function(){
    $("input[id='id.id']").blur(function(){
        alert($("input[id='id.id']").val());
    });
});

http://jsfiddle.net/E4mz9/268/

【讨论】:

  • . 是引用属性值的一部分时不需要转义。问题中的第一个示例表明选择器确实有效。
  • 我想你可能需要仔细看看这个问题。 blur 处理程序中的代码运行良好。 getEmailVal 中的代码不起作用,即使它使用相同的选择器来分配模糊处理程序。这里还有其他问题。你的回答没有解决任何问题。
  • OP 说尝试 $("input[id='primaryEmail.Revisit']").val()$("input[id='primaryEmail.Revisit']").attr("value") 都没有。但它确实有效,这就是我在回答中提到的。
  • 对。但这并不能解决任何问题。需要更多信息。 “为我工作”的答案是 not answers
  • 这至少让 OP 可以查看代码中的其他地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 2010-10-28
相关资源
最近更新 更多