2010-09-14 67 views
1
function insertParamIntoField(url, param, field) { 
    var anchor = document.createElement('a'), query; 
    anchor.value = url; 
    query = anchor.query.split('&'); 

    for(var i = 0, kv; i < query.length; i++) { 
     kv = query[i].split('=', 2); 
     if (kv[0] == param) { 
     field.value = kv[1]; 
     return; 
     } 
    } 
} 

$("a .reply").click(function() { 
    insertParamIntoField(this.href, "replyto", $("input .inputField")[0]); 
    return false; // prevent default action 
}); 

這是我的HTML代碼:這個jQuery有什麼問題嗎?

<textarea name="inputField" id="inputField" tabindex="1" rows="2" cols="40"></textarea> 
<a class ="reply" href="home.php?replyto=username">reply</a> 

我試圖做的是從回覆URL值插入使用Ajax的文本框,就像Twitter的。如果你明白我的意思?

+0

您可以指定向我們發生了什麼或出現什麼錯誤訊息? – corroded 2010-09-14 02:35:39

+0

真的沒有事情發生,或者沒有顯示錯誤,它只是沒有做它的意思? – getaway 2010-09-14 02:41:53

+0

嘗試逐步使用Firebug或Chrome開發人員工具...查看每個參數/變量的設置。 – 2010-09-14 02:46:37

回答

1

我是一種欺騙在這裏:)

function insertParamIntoField(url, param, field) { 
    var anchor = document.createElement('a'), query; 
    anchor.href = url; 
    query = anchor.search.substring(1, anchor.search.length).split('&'); 

    for(var i = 0, kv; i < query.length; i++) { 
     kv = query[i].split('=', 2); console.log(kv); 
     if (kv[0] == param) { 
     field.value = kv[1]; 
     return; 
     } 
    } 
} 

$("a.reply").click(function() { 
    insertParamIntoField(this.href, "replyto", $("textarea.inputField")[0]); 
    return false; // prevent default action 
}); 

或者:

function insertParamIntoField(anchor, param, field) { 
    var query = anchor.search.substring(1, anchor.search.length).split('&'); // anchor is a DOMElement 

    for(var i = 0, kv; i < query.length; i++) { 
     kv = query[i].split('=', 2); 
     if (kv[0] == param) { 
     field.value = kv[1]; 
     return; 
     } 
    } 
} 

$("a.reply").click(function() { 
    insertParamIntoField(this, "replyto", $("textarea.inputField")[0]); 
    return false; // prevent default action 
}); 
4

我還沒有測試過整個腳本函數,但需要刪除標記和類/ ID之間的空格,所以使用「a.reply」和「input#inputField」(或者只是「#inputField」 ):

$("a.reply").click(function() { 
    insertParamIntoField(this.href, "replyto", $("#inputField")[0]); 
    return false; // prevent default action 
}); 
+0

謝謝,但它仍然工作 – getaway 2010-09-14 02:41:09

1

除了什麼fudgey sugges TS,有關於你的insertParamIntoField功能的幾件事情,我注意到:

// url: home.php?replyto=username, param: replyto, field: $("input .inputField")[0] 
function insertParamIntoField(url, param, field) { 
    var anchor = document.createElement('a'), query; 
    // anchor is a link element and doesn't have a 'value' attribute 
    anchor.value = url; 
    // It also won't have a 'query' attribute. This probably causes an error 
    query = anchor.query.split('&'); 

    // As stated above there is no 'query' attribute to split on, but 
    // also there are no &'s to split on in the url you pass in anyway. 
    // At best, query will equal the full url... 
    for(var i = 0, kv; i < query.length; i++) { 
     kv = query[i].split('=', 2); 
     // ...so splitting on = would get you 
     // query[0] = "home.php?replyto", query[1] = "username" 
     // ... and "home.php?replyto" != "replyto", so... 
     if (kv[0] == param) { 
     //... it never gets here. Also 'field' is a textarea, not an input 
     // so it also doesn't have a 'value' attribute. try field.html(kv[1]) istead 
     field.value = kv[1]; 
     return; 
     } 
    } 
} 

試試這個:

function insertParamIntoField(url, param, field) { 
    var qs = url.split("?"); 
    var query = qs[1].split("&"); 

    for(var i = 0, kv; i < query.length; i++) { 
     kv = query[i].split('=', 2); 
     if (kv[0] == param) { 
     field.html(kv[1]); 
     return; 
     } 
    } 
} 

$("a.reply").click(function() { 
    insertParamIntoField(this.href, "replyto", $("textarea#inputField")); 
    return false; // prevent default action 
}); 
+0

謝謝,但它仍然是deosnt工作 – getaway 2010-09-14 03:19:52