更改jQuery事件上的按钮文本和目标

更改jQuery事件上的按钮文本和目标,jquery,button,text,submit,Jquery,Button,Text,Submit,以下是我当前的代码: $(document).ready(function(){ $("input#url").bind("textchange",showPage); $("input#url").focus(); $("form#surlform").submit(function(){ var url = $("input#url").val(); $.get("api/create.php?url=" + url, funct

以下是我当前的代码:

$(document).ready(function(){
    $("input#url").bind("textchange",showPage);
    $("input#url").focus();


    $("form#surlform").submit(function(){
        var url = $("input#url").val(); 
        $.get("api/create.php?url=" + url, function(data) {
                $("input#url").val(data);
                $("input#url").select();
            });

        return false;
    });
    });

$(document).click(function(){
    showPage();
});
$(document).mousemove(function(){
    showPage();
});
此时,当表单提交时,jQuery会阻止它重新加载页面,并从API中提取所需的输出。 如果可能的话,我想让它也改变按钮,使按钮文本不同,它链接到一个页面,而不是用jQuery提交表单。(如果有帮助,它更改为的按钮可以是div-只有原始按钮需要是表单的按钮)

这还不是全部。。。 然后,当文本字段中的文本被更改时,我希望它改回通过jQuery提交表单的按钮,该按钮包含原始文本

这是一个很大的问题,但如果有人有办法做到这一点,我将非常感激。

类似于:

HTML:

JavaScript:

$('#someForm').submit(function () {
    $('#submitButton').hide();
    $('#linkButton').show();
    return false;
});

$('#linkButton').click(function () {
    alert('use something like window.location here to act like a link');
});

$('#someInput').change(function () {
    $('#linkButton').hide();
    $('#submitButton').show();
});
目前它过于简单,可能需要一些改进,但这个想法非常简单

  • 当页面最初加载时,“链接”按钮被隐藏
  • 单击“提交”按钮时,“提交”按钮将隐藏,并显示“链接”按钮。(当然,不管你在做什么AJAX,为了简洁起见,这里不包括在内。)
  • 任何时候点击“链接”按钮,都要做些什么。在你的情况下,它是作为一个链接,对吗<代码>window.location='某个新位置'本质上
  • 任何时候文本更改,“链接”按钮都会隐藏,并显示“提交”按钮。如果它们已经被隐藏和显示,则不会造成任何伤害。(也许每次都会有一种更优雅、更少炫耀和隐藏的方式,但它完成了任务。)

  • 什么按钮?我们可能需要查看一些HTML。最简单的方法是有两个按钮——一个用于提交,一个用于链接。然后根据状态切换它们。@ChristianVarga上面的jQuery只作用于表单提交,目前根本不与按钮交互。表单HTML只是:谢谢,一切正常!不过最后一件事——在我上面的代码中,您可以看到它将文本框的值更改为API输出的数据。有什么方法可以将其设置为window.location的目标吗?@HenryCole:最简单的方法可能是在所有函数调用之外使用一个变量来存储URL。在AJAX调用中设置它的值,并在单击链接按钮时使用它的值。还要在该单击处理程序中执行一些错误检查,以确保该值在使用它之前是正确的(它是一个URL,等等)。
    #linkButton { display: none; }​
    
    $('#someForm').submit(function () {
        $('#submitButton').hide();
        $('#linkButton').show();
        return false;
    });
    
    $('#linkButton').click(function () {
        alert('use something like window.location here to act like a link');
    });
    
    $('#someInput').change(function () {
        $('#linkButton').hide();
        $('#submitButton').show();
    });