webForumDet fria alternativet

Skicka ett värde från en länk/knapp till ett textfält som onfocus?

JavaScript

4 svar · 312 visningar · startad av jimpa

Medlem sedan jan. 2001361 inlägg
Frågan#1

Hej,

Jag har ett formulär med en massa text-fält. Nu vill jag ha 3 stycken knappar. knapp nr.1 ska ha värdet 1, knapp nr.2 värdet 2 och knapp nr.3 ska ha värdet 3.
När man klickar på resp. knapp ska värdet sättas in i det textfält som markören var onfocus på innan man klickade på knappen.

Är det någon som har en aning om det går?

Mvh,
Jimmy

Medlem sedan dec. 20025 483 inlägg
#2

Tjena! :)

<script type="text/javascript">

var lastfocused = null;

window.onload = function(){
  var tf  = ["foo", "bar", "faa"],
      frm = document.forms["namn_pa_formular"];

  for (var i = 0; i < tf.length; ++i){
    frm.elements[tf[i]].onblur = function(){
      lastfocused = this;
    }
  }
}

function insVal(i){
  if (lastfocused){
    lastfocused.value = i;
  }
}

</script>
<form name="namn_pa_formular">
  <input name="foo">
  <input name="bar">
  <input name="faa">
  <br>
  <input type="button" value="Knapp 1" onclick="insVal(1)">
  <input type="button" value="Knapp 2" onclick="insVal(2)">
  <input type="button" value="Knapp 3" onclick="insVal(3)">
</form>

I tf lägger du namnen på de textfält som skriptet skall gälla för.

Medlem sedan jan. 2001361 inlägg
#3

Hej,
Suveränt!

Dock en grej. Eftersom formuläret är dynamiskt, antalet textfält varierar och namnges med "fold_ID-numret". Finns det någon möjlighet att inte behöva ta med namnet på textfälten i funktionen?

Och en grej till!
Jag har även denna kod som skickar iväg och sparar värdet när man ändrar i ett textfält:
onchange="location.href='update.asp?ID=<%=ID%>&bValue=' +document.getElementById('fold_<%=bArray(0)%>').value;"

Problemet blev nu att den aktiveras inte när man för in värdet med hjälp av knapparna?

Mvh,
Jimmy

Medlem sedan dec. 20025 483 inlägg
#4

Ett exempelnamn på textfälten kan alltså vara "fold_20"? Då

window.onload = function(){
  var frm = document.forms["namn_pa_formular"];

  for (var i = 0; i < frm.elements.length; ++i){
    if (/^fold_\d+$/.test(frm.elements[i].name)){
      frm.elements[i].onblur = function(){
	lastfocused = this;
      }
    }
  }
}

function insVal(i){
  if (lastfocused){
    lastfocused.value = i;
    lastfocused.onchange();
  }
}
Medlem sedan jan. 2001361 inlägg
#5

Tackar, helt perfekt (y)

Du är ju makalöst duktig detta!

Mvh,
Jimmy

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)