使用jQuery“自动填充”第二个文本框,基于第一个文本框的输入

时间:2010-07-11 02:43:59

标签: php jquery autofill

好吧,基本上我正在尝试做的是使用文本框的值(在大多数情况下是自动完成的)来填充另一个文本框,其中包含从数据库中提取的数据。

用户将在一个框中输入一个名称,一旦该输入失去焦点,第二个将自动填充名称的相关电子邮件地址。

我已经看到了一些与我想要的类似的jQuery插件,但只适用于选择(我不想要,因为这个名称可能是一个新的加入)。 / p>

我知道有人会说些什么:“好吧,你为什么不从数据库中提取名称和电子邮件地址,并在页面加载时填写表格。”答案:因为名称将动态添加(在订单跟踪软件的行中,当您添加新订单时)。

我正在使用PHP,MySQL,当然还有jQuery。

提前致谢。

3 个答案:

答案 0 :(得分:3)

您不需要插件即可,只需使用模糊事件

调用$ .post
$("#name").blur(function () {
    $.post(your_php_file, { name: $(this).val() }, function (data) {
        $("#email").val(data);
    });
});

在你的php文件中,你将能够获得$_POST["name"]的名称并将电子邮件发送回javascript,只需回复它

如果您需要加载的数据多于字符串,则应使用json_encode()对数组进行编码

$name = $_POST["name"];
//pick data from db
$arr = array("email"=>$email, "otherstuff"=>$otherstuff);
echo json_encode($arr);

并将您的帖子更改为:

$.post(your_php_file, { name: $(this).val() }, function (data) {
    $("#email").val(data.email);
    $("#otherstuff").val(data.otherstuff);
});

答案 1 :(得分:2)

你可以这样做......

$('#input_1').blur(function(){ // blur event, when the input box loses focus...
   var data = this.value;     // get the data of the this inputbox, in our case id="input_1"
   $.ajax({
       url: 'some/url.php', // your php that is used to query MySql
       method: 'get',       // method to be used , get/post
       data: {
           'foo' : data // the data to be passed, e.g. ?foo=data
       }
       success : function(msg){   // when connection to server is successful, msg is the data returned from 'some/url.php'
           $('#input_2').val(msg); // populate the second inputbox with msg... 
       }
   });
});

从上面的jQuery代码中,你可以在php中做$_GET['foo'] ...你应该echo第二个输入框所需的数据....

答案 2 :(得分:1)

这就是客户端的样子:

$('#name').blur(function(){
  str = $('#name').val()
  $.get("lookupemail.php", { name: str}, function(data){
    $('#email').val( data );
  });      
});

当'name'字段失去焦点时,向lookupemail.php发送请求,并将参数'name'设置为'name'字段。返回请求后,请将其放在“电子邮件”字段中。