2010-10-22 88 views
0

自动完成输入使生活更轻松。但是,我正在开发一个项目,客户坚持要有普通输入(单选按钮,复选框组和下拉选择)。我不想更改服务器端代码,并打算编写一个JavaScript函数来在客户端创建这些表单元素。我认为最好的方法是给一个普通的文本框输入一个类,并将其转换为最终的输入类型。但我不想重新发明轮子,所以我想我会检查一下是否已经完成。谷歌没有带来预期的结果,所以我转向SO,你见过这样的功能/插件吗?有没有ajax`select`?

+1

如何你的问题的标题和正文相关? – 2010-10-22 16:34:15

+0

@ŠimeVidas - 如果有这样的事情,它会用ajax供电,很可能被称为'ajax select' – 2010-10-22 16:38:52

+0

@Majid在SELECT元素(下拉列表)中选择?据我所知,你想要提供一个包含INPUT文本框的HTML页面,然后你想用JavaScript来替换那些带有其他类型表单元素的文本框,对吗? Ajax在哪里发挥作用? – 2010-10-22 16:44:35

回答

0

现在有一个;)这里是slightly modified jsfidle(因为我们不想从真实服务器拉数据)。在实际应用中的代码会是这样的:

标记

Please choose the product:<br/> 
<!-- not all products; only what we have on stock --> 
<input type="text" id="product"> 

JS

$(document).ready(function() { 

    $.getScript('available_products.php', function() { 

    // we assume the server would return an array like this: 
    // var products = ['33712:Product A', '12501:Product B', '14619:Product C']; 

    var myoptions = ''; 
    $.each(
    products, function(n, p) { 
     var pp = p.split(':'); 
     var i = pp[0]; 
     var v = pp[1]; 
     myoptions += '<option value="' + i + '">' + v + '</option>'; 
    }); 

    $('#product').replaceWith('<select id="product">' + myoptions + '</select>'); 

    }); 

}); 
0

如果我正确理解你的问题,你想为一个表格输入大量的文本,然后在客户端将其转换为其他形式的输入(复选框等)?不知道我是否真的理解这种动机(我认为只需提供符合客户需求的表单会更容易),但您应该可以使用replaceWith或相关功能来完成此操作。

虽然您的描述看起来好像有些东西缺失 - 您需要编辑服务器端以便在每个输入上放置一个类,为什么不直接改变类型呢?

+0

我想我最终会写这个函数。你的理解是正确的,动机是保持简单。假设你有一些需要获取用户标识的表单,使用'user-id'类更容易获得一个文本框,并且有一个脚本查询users表并返回user-id和将名称显示为json数据。没有这个,你将不得不为每个表单解析一个选择。 – 2010-10-22 17:01:02