This question already has answers here:
getAttribute() versus Element object properties?
(7 answers)
Closed 5 years ago.
I have a simple web-application with an input text field in it looking like this:
<input id="txtip" type="text" value="10.1.1.50" />
The address 10.1.1.50 is a default value for an ip address. And from javascript I would read it like this:
txtip.getAttribute("value")
Now let's suppose to change it to 10.1.1.49. In google chrome the above javascript code will still return 10.1.1.50, while the expression
txtip.value
returns 10.1.1.49.
What is the difference? What is the "right way"?
var el = document.getElementById('testBox');
$(document).focusout(function () {
alert('el.value = ' + el.value);
alert('el.getAttribute("value") = ' + el.getAttribute('value'));
e.preventDefault();
});
<h2>Change value in the text box</h2>
<input id="testBox" type="text" value="original value" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
Found this on web might help you try following code type something and focusout
The difference is that element.value is real time and if a user changes let's say, a textbox input, it will reflect that, and show you the new value.
While getAttribute('value') will still show the original value="whateverWasHere" value.
Related
This question already has answers here:
Clicking a button within a form causes page refresh
(11 answers)
How do I get the value of text input field using JavaScript?
(16 answers)
Closed 2 years ago.
I'm trying to write an if statement code to redirect users below 18 to a separate website from users above and equal to 18 but the code isn't running, can someone figure out and explain what the problem is?
<body>
<div>
<form>
How old are you?
<br>
<br>
<input type="text" id="number">
<button onclick = submit();>Submit</button>
</form>
</div>
<script>
function submit() {
var number= document.getElementById("number");
if (number >= 18 ) {
location.href = "inec.com.ng"
;}
else if (number== isNaN){
alert('Input a number');
}
else {location.href = "www.google.com";}
}
</script>
You're trying yo use the DOM element itself instead of using its value
.
Once you get its value, don't forget to cast is to an int with parseInt:
var number = parseInt(document.getElementById("number").value);
This question already has answers here:
How to access the webpage DOM/HTML from an extension popup or background script?
(2 answers)
Closed 2 years ago.
I am teaching myself how to build Chrome Extensions. The first thing I want to build is a simple word predictor that takes in your last few words, predicts the next word, and allows you to autocomplete the word by pressing tab.
The first thing I need to do is figure out how to access the text box the user is currently typing in. For example, Grammarly seems to do this well. I've searched through StackOverflow, but can't seem to find an answer (forgive me, I'm a beginner). Any help would be amazing!
First you need to get permission for your extension to access a user's tabs, as I understand it.
Then you need to access the current tab with chrome.tabs.getCurrent()
Then I think you'll need to do something like let focusedElement = chrome.tabs.getCurrent(() => document.activeElement)
I've developed an extension, but I've never accessed tabs so I'm not entirely sure about the last part. If that doesn't work, let me know!
I think I see what you mean by access now..
Just add this function to your content script and it will attach a event listener too all inputs on the page that returns the current input field.
All it does is uses a for loop to loop through all inputs on the page, then add a click addEventListener to each input, and have it return the current input
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<input type="text" name="text" id="input1" placeholder="Click me">
<input type="text" name="text" id="input2" placeholder="Click me">
<input type="text" name="text" id="input3" placeholder="Click me">
<br><br><br>
<div id="display"></div>
</body>
<script>
function inputs(){
for(let i = 0; i < document.querySelectorAll('input').length; i++){
document.querySelectorAll('input')[i].addEventListener('click', ()=>{
//Get the DOM element of whatever input user clicks on
var currentInput = document.querySelectorAll('input')[i];
console.log(currentInput);
//Just for example purposes
document.getElementById('display').innerText = 'You clicked on input...' + (i+1);
});
}
}
inputs();
</script>
</html>
Now that you have the exact input field the user is typing in.. you should be able to add the predicted words, by setting the input field equal to the current value of it + your predicted text.
This question already has answers here:
Why this JSFiddle does not work [duplicate]
(1 answer)
jsFiddle: no connection between html and js? Can't call simple function from button? [duplicate]
(1 answer)
Closed 5 years ago.
ive used a basic example from w3schools.com to get here:
https://jsfiddle.net/02wu0v49/
function myFunction() {
var x = document.getElementById("fname").value;
document.getElementById("demo").innerHTML = "aaaaaa";
document.getElementById("fname").value = "bbbbb";
alert("lala3");
}
<body>
<p>A function is triggered when the user releases a key in the input field. The function outputs the actual key/letter that was released inside the text field.</p>
Enter your name: <input type="text" id="fname" onkeyup="myFunction()">
<p>My name is: <span id="demo"></span></p>
</body>
somehow the w3schools version works but it wont do anything on jsfiddle?
and it would be really nice to use [code][/code] or something to format code on stackoverflow...all those indents are terrible.
Change load type to No wrap in - <body>
Here is updated fiddle
Here is Docs
If you open the browser console in JS fiddle it lists the error. The HTML can't find the JS.
This question already has answers here:
Set the value of an input field
(17 answers)
Closed 6 years ago.
I have a function that creates a string and I would like for it to be displayed in a textbox on the page. I cannot understand why this does not work.
HTML:
<input id="poNum" type="text" name="PO" id="PO" style="width: 310px;" readonly />
JS:
document.getElementById("poNum").innerHTML = number;
document.getElementById("poNum").value = number;
InnerHTML is accessing... well, the actual inner html. Where as value is a attribute for inputs (selects, buttons, etc).
Use document.getElementById("poNum").value = number;
<input> elements have values, not inner HTML:
document.getElementById("poNum").value = number;
This question already has answers here:
Why does jQuery or a DOM method such as getElementById not find the element?
(6 answers)
Closed 8 years ago.
I am very new to javascript. I am trying to place value on one input field. But it is not working, I don't know why..
document.getElementById("c_add").value='sssssss';
in the text area with id "c_add", I supposed that value will place as "sssssss", but it is not setting any value..
Full Code:
<body>
<script type="text/javascript">
document.getElementById("c_add").value='sssssss';
</script>
<textarea name="c_add" id="c_add"></textarea>
</body>
Did you tried do like this?
<input type="text" id="mytext">
<script type="text/javascript">
var elem = document.getElementById("mytext");
elem.value = "My default value";
</script>