0

I have alot pf inputs, and i want to on.('change') get the value or the name of the input as a string so that i can later convert it to a class and inject it onto a div... I may not have been the clearest possible but… any help is good!

the website: http://angusweb.pw

EDIT: the css classes used are from the framework on the site above, i'm developing it

It's below the big green square and the html is

HTML

<div class="setFullWH setFlex setFlexSuperCenter setFlexWrap ">

<form id="parentProperties" class="setFlex setFlexWrap setFlexRow">
<div class="setFlex setBasicGrow setBasicShrink setFlexBasis15 setFlexColumn setNoto">
<div class="setBasicGrow setJustifyContentSpcArnd">
<input id="flexParent1" name="flexParent" type="radio">
<label for="flexParent1">seFlexRow</label>
</div>
<div class="setBasicGrow">
<input id="flexParent2" name="flexParent" type="radio">
<label for="flexParent2">setFlexColumn</label>
</div>
<div class="setBasicGrow">
<input id="flexParent3" name="flexParent" type="radio">
<label for="flexParent3">setFlexHAlign</label>
</div>
</div>
<div class="setFlex setBasicGrow setBasicShrink setFlexBasis15 setFlexColumn setNoto">
<div class="setBasicGrow">
<input id="flexParent4" name="flexParent" type="radio">
<label for="flexParent4">setFlexVAlign</label>
</div>
<div class="setBasicGrow">
<input id="flexParent5" name="flexParent" type="radio">
<label for="flexParent5">setFlexSuperCenter</label>
</div>
<div class="setBasicGrow">
<input id="flexParent6" name="flexParent" type="radio">
<label for="flexParent6">setAlignContentStart</label>
</div>
</div>
<div class="setFlex setBasicGrow setBasicShrink setFlexBasis15 setFlexColumn setNoto">
<div class="setBasicGrow">
<input id="flexParent7" name="flexParent" type="radio">
<label for="flexParent7">setAlignContentEnd</label>
</div>
<div class="setBasicGrow">
<input id="flexParent8" name="flexParent" type="radio">
<label for="flexParent8">setAlignContentCenter</label>
</div>
<div class="setBasicGrow">
<input id="flexParent9" name="flexParent" type="radio">
<label for="flexParent9">setAlignContentStretch</label>
</div>
</div>
<div class="setFlex setBasicGrow setBasicShrink setFlexBasis15 setFlexColumn setNoto">
<div class="setBasicGrow">
<input id="flexParent10" name="flexParent" type="radio">
<label for="flexParent10">setAlignContentSpcBetw</label>
</div>
<div class="setBasicGrow">
<input id="flexParent11" name="flexParent" type="radio">
<label for="flexParent11">setAlignContentSpcArr</label>
</div>
<div class="setBasicGrow">
<input id="flexParent12" name="flexParent" type="radio">
<label for="flexParent12">setAlignItemsStart</label>
</div>
</div>

<div class="setFlex setBasicGrow setBasicShrink setFlexBasis15 setFlexColumn setNoto">
 <div class="setBasicGrow">
 <input id="flexParent13" name="flexParent" type="radio">
 <label for="flexParent13">setAlignItemsEnd</label>
 </div>
 <div class="setBasicGrow">
 <input id="flexParent14" name="flexParent" type="radio">
 <label for="flexParent14">setAlignItemsCenter</label>
 </div>
 <div class="setBasicGrow">
 <input id="flexParent15" name="flexParent" type="radio">
 <label for="flexParent15">setAlignItemsStretch</label>
 </div>
 </div>

   <div class="setFlex setBasicGrow setBasicShrink setFlexBasis15 setFlexColumn setNoto">
   <div class="setBasicGrow">
   <input id="flexParent16" name="flexParent" type="radio">
   <label for="flexParent16">setAlignItemsBaseline</label>
   </div>
   <div class="setBasicGrow">
   <input id="flexParent17" name="flexParent" type="radio">
   <label for="flexParent17">setFlexWrap</label>
   </div>
   </div>
   </form>
 </div>

EDIT: i managed to get the value i wanted, and transform it to a class, and inject to the wanted div… problem is, when i click some other input, i want the class generated by the former to be deleted, or replaced, by the new one…

3

3 Answers 3

1

Can you use jQuery? If so then

$('input:radio').each(function(){
    $(this).on("click",function(){
        console.log($(this).val()); //To get the value, this returns on/off wether your radio is selected or not
        console.log($(this).attr('name')); // To get the name
        console.log($(this).next('label').text()); //To get the text inside your label
    });
})
Sign up to request clarification or add additional context in comments.

2 Comments

can i make this into a re usable function?
How so? If you just put it inside your $(document).ready(function(){}) the script will run and your onclick events will be set to your inputs.
0

You can get the name and value of an input field with the following in javascript:

var inputs = document.getElementsByTagName('input');
var value = inputs[0].value;
var name = inputs[0].name;

console.log(value);
console.log(name);
<input id="inputText" type="text" name="fname" value="a value">

2 Comments

what if i have like 40 inputs? not very pratical to that to all…
@Miguel I edited the answer to select a list of inputs. You can do this or select an input by a particular name or ID.
0

You can add this new element (<div class="class-name"></div>) in HTML and inject the name of the selected input(radio) in its class. Here is The code:

HTML

<div class="class-name"></div>

JavaScript

$(document).ready(function(){
  $('#parentProperties input').on('click', function(){
    className = $(this).attr('name');
    $('.class-name').addClass(className);
  });
});

Instead of on.('change') on.('click') is perfect in this case.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.