2017-10-18 18 views
1

Ich versuche, Werte in einer Schaltfläche URI zu ändern, um Textwerte einzugeben.HTML-Button - Wie URL-Inhalt dynamisch ändern

<div class="numcontainer"> 
    <input required="required" onchange="getNumber()" id="cnt" type="input" name="input" placeholder="ISD"> 
    <input required="required" onchange="getNumber()" id="wano" type="input" name="input" placeholder="Enter number"> 
</div> 
<button type="submit" name="gowa" id="btngo" onclick="location.href='myserver://send?phone=NumberPlaceHolder'">Go!</button> 

NumberPlaceHolder: Der Versuch, Werte in den beiden Eingangs

JS eingeben verketten: Es funktioniert nicht wie erwartet

function getNumber() { 
    document.getElementById('btngo').href.replace("NumberPlaceHolder",document.getElementById('cnt').value+document.getElementById('wano').value); 
} 

. Wie kann ich das lösen?

Antwort

1

nur eine Alternative, es ist sauberer

<div class="numcontainer"> 
    <input required id="cnt" type="text" placeholder="ISD"> 
    <input required id="wano" type="number" placeholder="Enter number"> 
</div> 
<input type="submit" name="gowa" id="btngo" onclick="getNumber()" value="Go!"> 

 

function getNumber() { 
    var val = (id) => { 
     return document.getElementById(id).value; 
    } 
    location.href ='myserver://send?phone='+val('cnt')+val('wano'); 
} 

onChange völlig unnötig ist. fiddle

+0

was ist 'el' hier? – rimboche

+0

Es ist der Parameter für das Element, sec Ich werde bearbeiten, um 'ID', besser – Thielicious

+1

Perfekt! Es funktioniert wie ich es erwartet habe! – rimboche

2

Sie können kein href Attribut für eine Schaltfläche haben. Sie müssen hier die onclick Attribut ändern:

function getNumber(){ 
    document.getElementById('btngo').setAttribute("onclick", document.getElementById('btngo').getAttribute("onclick").replace("NumberPlaceHolder", document.getElementById('cnt').value+document.getElementById('wano').value)); 
} 

Es ist immer besser, wenn es wie folgt aufgeteilt:

function getNumber(){ 
    curOnclick = document.getElementById('btngo').getAttribute("onclick"); 
    wanoValue = document.getElementById('cnt').value+document.getElementById('wano').value; 
    newOnclick = curOnclick.replace("NumberPlaceHolder", wanoValue); 
    document.getElementById('btngo').setAttribute("onclick", newOnclick); 
} 
+0

oops !! Ich habe ein Problem wieder .. Ich arbeite nur zum ersten Mal, wenn ich die Seite aktualisiere und eine andere Nummer setzt, zeigt NumberPlaceholder anstelle der tatsächlichen Eingabe Nummer – rimboche

+0

@Rimboche Awesome. Kannst du ein [mcve] machen, damit ich gut hineinschauen kann? – Soolie

+0

Zum Beispiel setze ich eine Nummer zum ersten Mal und wenn ich auf den Knopf klicke, wird es wie erwartet funktionieren, aber wenn ich zurückgehe und eine andere Nummer in das Textfeld gebe die Methode nicht gegebene Nummer – rimboche

0

sollten Sie einfach verwenden

<a href="myserver://send?phone=NumberPlaceHolder"></a> 

statt

<button type="submit" name="gowa" id="btngo" onclick="location.href='myserver://send?phone=NumberPlaceHolder'">Go!</button> 

Link verwenden, um diese zu ändern:

document.querySelector('.start a').href = 'my-new-address' 
0

Ihre Eingabetyp ändern wie diese type="nummber" oder type="text" für immer Nummer oder Text nur

<input required="required" onchange="getNumber()" id="cnt" type="nummber" placeholder="ISD"> 
<input required="required" onchange="getNumber()" id="wano" type="number" placeholder="Enter number"> 

Sie können Click-Ereignis auf Ihre Schaltfläche wie folgt hinzufügen.

function getNumber(){ 
    document.getElementById("btngo").onclick = function() { 
     var ll = "myserver://sendphone="+document.getElementById('cnt').value+document.getElementById('wano').value; 
     console.log(ll); // checking url in console. 
     location.href = ll; 
    }; 
}