JQuery值没有改变

时间:2015-08-07 10:28:42

标签: javascript jquery asp.net-mvc asp.net-mvc-4 html.actionlink

 @Html.ActionLink("Search", "GetDateWiseGuestReport", "Reports", new { StartDate = "sss",EndDate="eee" }, new { @id = "btnDateWiseGuestSearch",  @class = "btn btn-red" })


$("#btnDateWiseGuestSearch").bind('click', function () {
                //Get the id of the selected item in dropdown

            var EndDate = $("#txtDateWiseGuestEndDate").val();
            var StartDate = $("#txtDateWiseGuestStartDate").val();

              this.href = this.href.replace("sss", StartDate);
              this.href = this.href.replace("eee", EndDate);
 });

好的我正在使用上面的代码在运行时更改Action-link URL。一切运行顺利。但我有一个奇怪的问题,即当我点击按钮第一次从文本框中获取值并相应地更改,但是当我再次按下按钮时,它不会从文本框中获取新值,而是以某种方式使用OLD VALUES我第一次输入了!

2 个答案:

答案 0 :(得分:4)

因为在第一次点击后,您正在从href中替换ssseee,因此href中没有ssseee。所以在第一次点击后没有任何内容被替换

因此,一种可能的解决方案是将原始href值存储在其他位置,然后使用它来替换内容。在下面的解决方案中,数据api用于存储原始值

var $btn = $("#btnDateWiseGuestSearch");
$btn.data('href', $btn.attr('href'))
$btn.bind('click', function () {
    //Get the id of the selected item in dropdown

    var EndDate = $("#txtDateWiseGuestEndDate").val();
    var StartDate = $("#txtDateWiseGuestStartDate").val();

    var href = $(this).data('href');
    this.href = href.replace("sss", StartDate).replace("eee", EndDate);
});

答案 1 :(得分:0)

基本上在您的jQuery代码中,您可以通过替换ssseee来创建新链接,但是一旦您替换它们,就不会再找到它们

this.href = this.href.replace("sss", StartDate); // sss no longer exists after this
this.href = this.href.replace("eee", EndDate); // sss no longer exists after this

您需要做的是在修改原始href值之前存储它,然后在您想要更新链接时引用它

$("#btnDateWiseGuestSearch").bind('click', function () {
    var $this = $(this);
    var originalhref = $this.data("href");
    if(!originalhref){
        this.data("href", this.href);
    }

    var EndDate = $("#txtDateWiseGuestEndDate").val();
    var StartDate = $("#txtDateWiseGuestStartDate").val();

    this.href = originalhref.replace("sss", StartDate).replace("eee", EndDate);
 });