indexOf возвращает НОМЕР позиции, в которой впервые встречается указанный символ.
"123.1".indexOf("."); // выведет 3
"0.1".indexOf("."); // выведет 1
И возвращается -1, если совпадений нет.
Нужно
if( inp > -1 ) { //...
_______________________
let inp = document.getElementById("result").value;
let res = $("#result").val();
А ничо, что это абсолютно одно и то же?) Одно получено через обычный JS, другое методами jQ. Но оба хранят одну и ту же строку.
_______________________________
$(".ket").click(function(){
let $res = $('#result');
let val = $res.val();
let ket = $(this).html();
if( val.contains(".") ) return; // прерывает выполнение функции.
// Если не прервалось, значит тыкали не на точку:
$res.val( val + ket );
});
_____________________
contains более современный метод поиска подстроки, и используется там, где нужно просто получить true / false, а конкретная позиция не интересует.
Если переменная ссылается на jQuery-объект, полезно его называть через $... чтобы знать, что в ней хранится, даже если код станет очень большим.
А значения переменных val и ket хоть и получены через jQuery-методы, но это обычные JS-строки.