我在JQuery中有一个问题.$.ajax()我在我的代码中(Function 1)使用将字段名和序列号发送到ctrller,它通过$_POST['name']和获取数据$_POST['sequenceno']并更新表中的字段名,序列号为no..And生成预览显示面板插入字段..现在我正在尝试再次更改字段名称现在,当我点击生成的显示面板字段时,相应的设置将打开,我将尝试更改字段的名称(Function 2)
无论Function1和Function2相同..In了Function1我送的字段名和顺序没有
在Funciton 2中,我想发送相同的fieldname和(但是另一个值)sequenceno ..
但是在Function1中(sequenceno是计数器值)而在Function2中(sequenceno是单击的div id(显示面板))
我怎样才能为两者使用相同的函数..或者我可以使用单独的函数..
即使我尝试使用2个不同的功能,但没有正确更新
我的代码是
//This is what i insert the field initially
$(".TextFieldSettings #fieldTitle").change(function (){
fieldname=$(".TextFieldSettings #fieldTitle").val();
$.ajax({
type: "POST",
url: "./server",
data: "name="+fieldname+"&sequenceno="+counter,
success: function(msg){
}//success
});//ajax
});//change
//After inserting to get the updated values in JSON format
var htm = $.ajax({
type: "GET",
url: "./viewforms",
async: false
}).responseText;
var myObject = eval('(' + htm + ')');
gettype=myObject.attributes[0]["type"];
getlabel=myObject.attributes[0]["labels"];
//showing in my DisplayPanel view
$("#labelstr"+counter+"").html(getlabel);
});//change
Run Code Online (Sandbox Code Playgroud)
现在,当我单击DisplayPanel视图时
$("#displayPanel div").live("click", function(){
div_id=$(this).attr("id");
var htm = $.ajax({
type: "GET",
url: "./getattributes/"+div_id+"",
async: false
}).responseText;
var myObject = eval('(' + htm + ')');
gettype=myObject.attributes[0]["type"];
getlabel=myObject.attributes[0]["labels"];
getsize=myObject.attributes[0]["size"];
if(gettype=='Text')
{
$(".TextFieldSettings").show(function(){
$(".TextFieldSettings #fieldTitle").val(getlabel);//showing the updated value
if(getsize=='100')
{
$("#fieldSize option:contains(Small)").attr("selected",true);
}
else if(getsize=='200')
{
$("#fieldSize option:contains(Medium)").attr("selected",true);
}
else
{
$("#fieldSize option:contains(Large)").attr("selected",true);
}
//Again i m changing the fieldname
$(".TextFieldSettings #fieldTitle").change(function (){
fieldname=$(".TextFieldSettings #fieldTitle").val();
alert(div_id);
$.ajax({
type: "POST",
url: "./editsettings",
data: "name="+fieldname+"&sequenceno="+div_id,
success: function(msg){
}//success
});//ajax
});//change in text value later*/
});//show
}//if type = TEXT
});//displaypanel Div clicked
Run Code Online (Sandbox Code Playgroud)
但是现在如果我再次尝试更改字段名称,我正在编写另一个POST函数,editsettings但执行进入Func1(最初更改)而不是Func2(再次更改字段名称)...请有人得到答案....注意:
$(".TextFieldSettings #fieldTitle").change()在我的prg里面使用了两次..可能是因为这个更新出错了
看起来问题是你的两个事件处理程序都在触发,而你只想要触发后者.
jQuery .change()函数为change事件添加了一个事件处理程序.它不会取代现有的.如果要删除以前的处理程序,则需要以下内容:
$(".TextFieldSettings #fieldTitle").unbind('change')
Run Code Online (Sandbox Code Playgroud)
在附加新处理程序之前.
请注意,我不确定这是否有效(我刚从api文档中找到它),我现在无法测试它.但是,一般的想法是,如果您希望事件处理程序停止响应事件,则必须删除处理程序.
你确定你没有两次包含相同的脚本吗?例如:
Viewstart:
Scripts/jquery-1.6.1.js
Run Code Online (Sandbox Code Playgroud)
局部视图:
<script src="@Url.Content("~/Scripts/jquery-1.6.1.min.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,我通过删除min-version解决了这个问题.
我希望这将有所帮助.
| 归档时间: |
|
| 查看次数: |
20548 次 |
| 最近记录: |