2011-05-19 42 views
0

嗨我有一个文本框....我想从那里拿用户输入并传递给PHP,而不使用提交按钮...我宁愿一个正常的按钮和onclick应该将数据传递到php从HTML格式传递值到PHP没有提交表格

好的,这里是我听到的....你可以调用一个JS函数onclick,然后你可以从那里提交表单....但我想在同一页提交表格后......这就是为什么我不想提交的形式在第一个地方......但看起来像没有其他方式......如果任何人知道提交方法,请帮助....

我很欣赏大家的努力

谢谢

+3

你的目标是?你想防止重新加载页面吗? – 2011-05-19 21:33:31

+0

是的,另一个目标是我不想使用AJAX – koool 2011-05-19 21:38:07

+1

java \ flash应用程序只剩下我能想到的 – 2011-05-19 21:39:47

回答

9

是的,它被称为AJAX。 :)

在jQuery中,为简洁:

// or $('#textbox_autopost').blur if you want to do it when the box loses focus 
$('#textbox_autopost').change(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$(this).val()} 
    }); 
}); 

,如果你想通过按钮来做到这一点单击

<button id="inlinesubmit_button" type="button">submit</submit> 

$('#inlinesubmit_button').click(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$('#textbox').val()} 
    }); 
}); 

你也可以做到这一点通过A HREF(或提交按钮或其他东西古怪:

<!-- backup if JS not available --> 
<a href="handler.php" id="inline_submit_a">add comment</a> 

$('#inline_submit_a').click(function(evt){ 
    $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$('#textbox').val()} 
    }); 
    evt.preventDefault(); 
    return false; 
}); 

如果你想在做进入:

$('#textbox_autopost_onenter').keydown(function(evt){ 
    if ((evt.keyCode) && (evt.keyCode == 13)) 
    { 
     $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$(this).val()} 
     }); 
     evt.preventDefault(); 
     return false; 
    } 
}); 

决赛,现场准备代码:

$(document).ready(function(){ 
    function submitMe(selector) 
    { 
     $.ajax({ 
      type: "POST", 
      url: "some.php", 
      data: {text:$(selector).val()} 
     }); 

    } 
    $('#textbox_button').click(function(){ 
     submitMe('#textbox'); 
    }); 
    $('#textbox').keydown(function(evt){ 
     if ((evt.keyCode) &&(evt.keyCode == 13)) 
     { 
     submitMe('#textbox'); 
     evt.preventDefault(); 
     return false; 
     } 
    }); 
+0

嗨约翰...我只想问一件事......当用户没有完成输入时,它甚至会发送数据,或者在用户完成输入后它会发送数据....因为听起来像几乎所有击键后都会发送数据... ..无论如何,我可以确保用户已经完成输入 – koool 2011-05-19 21:48:13

+1

是的,这发送每个按键。您想如何检测用户是否已完成打字?有几个选项:用户点击输入,用户点击表单。如果是后者,只需将'.change(function'改为'.blur(function')。前者是可行的,但需要另外一行或两行代码。 – 2011-05-19 21:57:12

+0

进入或者我有一个表单点击按钮可以通知该用户已完成...感谢您的回复 – koool 2011-05-19 22:04:52

3

您需要使用Javascript将AJAX POST请求发送回服务器上的PHP。

有一个很好的教程here,它使用jQuery来验证表单,发送给服务器,然后根据服务器的响应向用户显示一条消息。

+0

我知道我们可以做到这一点与AJAX ....但是有没有其他替代AJAX – koool 2011-05-19 21:35:08

+1

没有队友没有不幸 – 2011-05-19 21:35:40

+1

@koool:AJAX实际上只是一个名字,可以连接到服务器的所有技术,而无需张贴表格。没有AJAX,你什么都没有。有没有你想避免的特定品牌的AJAX? – mellamokb 2011-05-19 21:36:07

2

你必须使用AJAX。

我强烈建议使用jQuery的:)

jQuery

1

我不确定你所说的“普通按钮”的意思,但如果你不想使用<input type="submit">,您可以使用<button type="submit">

A button为您提供了更大的布局自由度,但如果在一个页面中使用多个button元素,旧版本的IE会变得困惑。

2

几种方法可以做到这一点......

听起来好像你是一个非重定向解决方案后,所以我建议jQuery的(这是我最喜欢的,但也有实现AJAX很多其他的解决方案),并做类似如下:

假设你有一个文本框和按钮这样的:

<input id="txt_input" type="text" /> 
<input id="btn_send" type="button" value="Submit" /> 

然后做这样的事情

$(document).ready(function() { 
    $("#btn_send").click(function() { 

     // Do stuff BEFORE sending... // 
     callAFunction(); 
     var test = "asdfasdf"; 

     // Send the text to PHP // 
     $.post("test.php", { input: $("#txt_input").val()}, 
      function(data) { 
       alert("test.php returned: " + data); 
      } 
     ); 

     // Do more stuff after sending.... // 
     callAnotherFunction(); 
    }); 
}); 

我相信会得到你以后有什么。有关jQuery和更多选项与$ .post,更多信息,请点击这里:http://api.jquery.com/jQuery.post/

希望帮助!

+0

HI ...谢谢你的回答,但是点击我想跟其他2个javascript函数一起调用这是可能的 – koool 2011-05-19 21:50:11

+2

Sure !我将编辑我的答案以显示如何。 – JFitzDela 2011-05-19 21:52:56

+0

非常感谢..我会尝试一下...我欣赏这个 – koool 2011-05-19 21:56:07